123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 |
- #define MISSION2_CPP
- /*************************************************************************************************\
- mission2.cpp : The parts of mission.cpp that we need for the mech viewer
- //---------------------------------------------------------------------------//
- // Copyright (C) Microsoft Corporation. All rights reserved. //
- //===========================================================================//
- \*************************************************************************************************/
- #include "mission.h"
- bool Mission::statisticsInitialized = 0;
- #ifdef LAB_ONLY
- __int64 MCTimeABLLoad = 0;
- __int64 MCTimeMiscToTeamLoad = 0;
- __int64 MCTimeTeamLoad = 0;
- __int64 MCTimeObjectLoad = 0;
- __int64 MCTimeTerrainLoad = 0;
- __int64 MCTimeMoveLoad = 0;
- __int64 MCTimeMissionABLLoad = 0;
- __int64 MCTimeWarriorLoad = 0;
- __int64 MCTimeMoverPartsLoad = 0;
- __int64 MCTimeObjectiveLoad = 0;
- __int64 MCTimeCommanderLoad = 0;
- __int64 MCTimeMiscLoad = 0;
- __int64 MCTimeGUILoad = 0;
- __int64 x1;
- __int64 MCTimeMultiplayerUpdate = 0;
- __int64 MCTimeTerrainUpdate = 0;
- __int64 MCTimeCameraUpdate = 0;
- __int64 MCTimeWeatherUpdate = 0;
- __int64 MCTimePathManagerUpdate = 0;
- __int64 MCTimeRunBrainUpdate = 0;
- __int64 MCTimePath1Update = 0;
- __int64 MCTimePath2Update = 0;
- __int64 MCTimePath3Update = 0;
- __int64 MCTimePath4Update = 0;
- __int64 MCTimePath5Update = 0;
- __int64 MCTimeCalcGoal1Update = 0;
- extern __int64 MCTimeCalcPath1Update;
- extern __int64 MCTimeCalcPath2Update;
- extern __int64 MCTimeCalcPath3Update;
- extern __int64 MCTimeCalcPath4Update;
- extern __int64 MCTimeCalcPath5Update;
- __int64 MCTimeCalcGoal2Update = 0;
- __int64 MCTimeCalcGoal3Update = 0;
- __int64 MCTimeCalcGoal4Update = 0;
- __int64 MCTimeCalcGoal5Update = 0;
- __int64 MCTimeCalcGoal6Update = 0;
- __int64 MCTimeTerrainGeometry = 0;
- __int64 MCTimeCraterUpdate = 0;
- __int64 MCTimeTXMManagerUpdate = 0;
- __int64 MCTimeSensorUpdate = 0;
- __int64 MCTimeLOSUpdate = 0;
- __int64 MCTimeCollisionUpdate = 0;
- __int64 MCTimeMissionScript = 0;
- __int64 MCTimeInterfaceUpdate = 0;
- __int64 MCTimeMissionTotal = 0;
- extern __int64 MCTimeTerrainGeometry ;
- extern __int64 MCTimeCraterUpdate ;
- extern __int64 MCTimeTXMManagerUpdate ;
- extern __int64 MCTimeSensorUpdate ;
- extern __int64 MCTimeLOSUpdate ;
- extern __int64 MCTimeCollisionUpdate ;
- extern __int64 MCTimeMissionScript ;
- extern __int64 MCTimeInterfaceUpdate ;
- extern __int64 MCTimeMissionTotal;
- extern __int64 MCTimeLOSCalc;
- extern __int64 MCTimeTerrainObjectsUpdate;
- extern __int64 MCTimeMechsUpdate;
- extern __int64 MCTimeVehiclesUpdate;
- extern __int64 MCTimeTurretsUpdate;
- extern __int64 MCTimeAllElseUpdate;
- extern __int64 MCTimeTerrainObjectsTL;
- extern __int64 MCTimeMechsTL;
- extern __int64 MCTimeVehiclesTL;
- extern __int64 MCTimeTurretsTL;
- extern __int64 MCTimeAnimationCalc;
- extern __int64 x;
- extern float OneOverProcessorSpeed;
- #endif
- void Mission::initBareMinimum()
- {
- long result = 0;
- if ( !mcTextureManager )
- {
- mcTextureManager = new MC_TextureManager;
- mcTextureManager->start();
- }
- //Startup the vertex array pool
- mcTextureManager->startVertices(100000);
- initTGLForLogistics();
- //----------------------------------------------
- // Start Appearance Type Lists.
- unsigned long spriteHeapSize = 3072000;
- if ( !appearanceTypeList )
- {
- appearanceTypeList = new AppearanceTypeList;
- gosASSERT(appearanceTypeList != NULL);
- appearanceTypeList->init(spriteHeapSize);
- gosASSERT(result == NO_ERR);
- }
- if ( !weaponEffects )
- {
- weaponEffects = new WeaponEffects;
- weaponEffects->init("Effects");
- }
- if ( statisticsInitialized == 0 )
- {
- initializeStatistics();
- }
- }
- void Mission::initializeStatistics()
- {
- #ifdef LAB_ONLY
- //Add Mission Load statistics to GameOS Debugger screen!
- MCTimeABLLoad *= OneOverProcessorSpeed;
- MCTimeMiscToTeamLoad*= OneOverProcessorSpeed;
- MCTimeTeamLoad *= OneOverProcessorSpeed;
- MCTimeObjectLoad *= OneOverProcessorSpeed;
- MCTimeTerrainLoad *= OneOverProcessorSpeed;
- MCTimeMoveLoad *= OneOverProcessorSpeed;
- MCTimeMissionABLLoad*= OneOverProcessorSpeed;
- MCTimeWarriorLoad *= OneOverProcessorSpeed;
- MCTimeMoverPartsLoad*= OneOverProcessorSpeed;
- MCTimeObjectiveLoad *= OneOverProcessorSpeed;
- MCTimeCommanderLoad *= OneOverProcessorSpeed;
- MCTimeMiscLoad *= OneOverProcessorSpeed;
- MCTimeGUILoad *= OneOverProcessorSpeed;
-
- //Add Mission Run statistics to GameOS Debugger screen!
- StatisticFormat( "" );
- StatisticFormat( "MechCommander 2 GameLogic" );
- StatisticFormat( "=========================" );
- StatisticFormat( "" );
- AddStatistic( "Terrain Update", "%", gos_timedata, (void*)&MCTimeTerrainUpdate , 0 );
- AddStatistic( "Camera Update", "%", gos_timedata, (void*)&MCTimeCameraUpdate , 0 );
- AddStatistic( "Weather Update", "%", gos_timedata, (void*)&MCTimeWeatherUpdate , 0 );
- AddStatistic( "RunBrain Path Update", "%", gos_timedata, (void*)&MCTimeRunBrainUpdate , 0 );
- AddStatistic( "PathManager Update", "%", gos_timedata, (void*)&MCTimePathManagerUpdate , 0 );
- AddStatistic( " Path1 Update", "%", gos_timedata, (void*)&MCTimePath1Update , 0 );
- AddStatistic( " Path2 Update", "%", gos_timedata, (void*)&MCTimePath2Update , 0 );
- AddStatistic( " Path3 Update", "%", gos_timedata, (void*)&MCTimePath3Update , 0 );
- AddStatistic( " Path4 Update", "%", gos_timedata, (void*)&MCTimePath4Update , 0 );
- AddStatistic( " Path5 Update", "%", gos_timedata, (void*)&MCTimePath5Update , 0 );
- AddStatistic( " CalcPath1 Update", "%", gos_timedata, (void*)&MCTimeCalcPath1Update , 0 );
- AddStatistic( " CalcPath2 Update", "%", gos_timedata, (void*)&MCTimeCalcPath2Update , 0 );
- AddStatistic( " CalcPath3 Update", "%", gos_timedata, (void*)&MCTimeCalcPath3Update , 0 );
- AddStatistic( " CalcPath4 Update", "%", gos_timedata, (void*)&MCTimeCalcPath4Update , 0 );
- AddStatistic( " CalcPath5 Update", "%", gos_timedata, (void*)&MCTimeCalcPath5Update , 0 );
- AddStatistic( " CalcGoal1 Update", "%", gos_timedata, (void*)&MCTimeCalcGoal1Update , 0 );
- AddStatistic( " CalcGoal2 Update", "%", gos_timedata, (void*)&MCTimeCalcGoal2Update , 0 );
- AddStatistic( " CalcGoal3 Update", "%", gos_timedata, (void*)&MCTimeCalcGoal3Update , 0 );
- AddStatistic( " CalcGoal4 Update", "%", gos_timedata, (void*)&MCTimeCalcGoal4Update , 0 );
- AddStatistic( " CalcGoal5 Update", "%", gos_timedata, (void*)&MCTimeCalcGoal5Update , 0 );
- AddStatistic( " CalcGoal6 Update", "%", gos_timedata, (void*)&MCTimeCalcGoal6Update , 0 );
- AddStatistic( "Terrain Geometry", "%", gos_timedata, (void*)&MCTimeTerrainGeometry , 0 );
- AddStatistic( "Interface Update", "%", gos_timedata, (void*)&MCTimeInterfaceUpdate , 0 );
- AddStatistic( "Crater Update", "%", gos_timedata, (void*)&MCTimeCraterUpdate , 0 );
- AddStatistic( "TXM Mgr Update", "%", gos_timedata, (void*)&MCTimeTXMManagerUpdate , 0 );
- AddStatistic( "Sensor Update", "%", gos_timedata, (void*)&MCTimeSensorUpdate , 0 );
- AddStatistic( "LOS Update", "%", gos_timedata, (void*)&MCTimeLOSUpdate , 0 );
- AddStatistic( "Collision Update", "%", gos_timedata, (void*)&MCTimeCollisionUpdate , 0 );
- AddStatistic( "Mission Script", "%", gos_timedata, (void*)&MCTimeMissionScript , 0 );
- AddStatistic( "Multiplayer Update", "%", gos_timedata, (void*)&MCTimeMultiplayerUpdate , 0 );
- StatisticFormat( "=========================" );
- AddStatistic( "TerrainObject Update", "%", gos_timedata, (void*)&MCTimeTerrainObjectsUpdate, 0 );
- AddStatistic( "TerrainObject T&L", "%", gos_timedata, (void*)&MCTimeTerrainObjectsTL, 0 );
- AddStatistic( "Mech Update", "%", gos_timedata, (void*)&MCTimeMechsUpdate , 0 );
- AddStatistic( "Mech T&L", "%", gos_timedata, (void*)&MCTimeMechsTL , 0 );
- AddStatistic( "Vehicle Update", "%", gos_timedata, (void*)&MCTimeVehiclesUpdate , 0 );
- AddStatistic( "Vehicle T&L", "%", gos_timedata, (void*)&MCTimeVehiclesTL , 0 );
- AddStatistic( "Turret Update", "%", gos_timedata, (void*)&MCTimeTurretsUpdate , 0 );
- AddStatistic( "Turret T&L", "%", gos_timedata, (void*)&MCTimeTurretsTL , 0 );
- AddStatistic( "Everything else Update", "%", gos_timedata, (void*)&MCTimeAllElseUpdate , 0 );
- StatisticFormat( "=========================" );
- AddStatistic( "Total Mission Time", "%", gos_timedata, (void*)&MCTimeMissionTotal , 0 );
- StatisticFormat( "=========================" );
- AddStatistic( "Total LOS Calc Time", "%", gos_timedata, (void*)&MCTimeLOSCalc , 0 );
- StatisticFormat( "=========================" );
- AddStatistic( "Total Anim Calc Time", "%", gos_timedata, (void*)&MCTimeAnimationCalc , 0 );
- statisticsInitialized = true;
- HeapList::initializeStatistics();
- TerrainTextures::initializeStatistics();
- #endif
- }
- void Mission::initTGLForLogistics()
- {
- //---------------------------------------------------------
- unsigned long tglHeapSize = 4 * 1024 * 1024;
- //---------------------------------------------------------
- //Reset the lightening in case they exitted with a flash on screen!!
- TG_Shape::lighteningLevel = 0;
- //---------------------------------------------------------
- // End the Tiny Geometry Layer Heap for the Mission
- if (TG_Shape::tglHeap)
- {
- //Shut down the TGL RAM pools.
- if (colorPool)
- {
- colorPool->destroy();
- delete colorPool;
- colorPool = NULL;
- }
-
- if (vertexPool)
- {
- vertexPool->destroy();
- delete vertexPool;
- vertexPool = NULL;
- }
- if (facePool)
- {
- facePool->destroy();
- delete facePool;
- facePool = NULL;
- }
- if (shadowPool)
- {
- shadowPool->destroy();
- delete shadowPool;
- shadowPool = NULL;
- }
- if (trianglePool)
- {
- trianglePool->destroy();
- delete trianglePool;
- trianglePool = NULL;
- }
-
- TG_Shape::tglHeap->destroy();
- delete TG_Shape::tglHeap;
- TG_Shape::tglHeap = NULL;
- }
- //------------------------------------------------------
- // Start the Tiny Geometry Layer Heap for Logistics
- if ( !TG_Shape::tglHeap )
- {
- TG_Shape::tglHeap = new UserHeap;
- TG_Shape::tglHeap->init(tglHeapSize,"TinyGeom");
-
- //Start up the TGL RAM pools.
- colorPool = new TG_VertexPool;
- colorPool->init(2000);
-
- vertexPool = new TG_GOSVertexPool;
- vertexPool->init(2000);
-
- facePool = new TG_DWORDPool;
- facePool->init(4000);
-
- shadowPool = new TG_ShadowPool;
- shadowPool->init(2000);
-
- trianglePool = new TG_TrianglePool;
- trianglePool->init(2000);
- }
- }
- //*************************************************************************************************
- // end of file ( mission2.cpp )
|