mission2.cpp 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  1. #define MISSION2_CPP
  2. /*************************************************************************************************\
  3. mission2.cpp : The parts of mission.cpp that we need for the mech viewer
  4. //---------------------------------------------------------------------------//
  5. // Copyright (C) Microsoft Corporation. All rights reserved. //
  6. //===========================================================================//
  7. \*************************************************************************************************/
  8. #include "mission.h"
  9. bool Mission::statisticsInitialized = 0;
  10. #ifdef LAB_ONLY
  11. __int64 MCTimeABLLoad = 0;
  12. __int64 MCTimeMiscToTeamLoad = 0;
  13. __int64 MCTimeTeamLoad = 0;
  14. __int64 MCTimeObjectLoad = 0;
  15. __int64 MCTimeTerrainLoad = 0;
  16. __int64 MCTimeMoveLoad = 0;
  17. __int64 MCTimeMissionABLLoad = 0;
  18. __int64 MCTimeWarriorLoad = 0;
  19. __int64 MCTimeMoverPartsLoad = 0;
  20. __int64 MCTimeObjectiveLoad = 0;
  21. __int64 MCTimeCommanderLoad = 0;
  22. __int64 MCTimeMiscLoad = 0;
  23. __int64 MCTimeGUILoad = 0;
  24. __int64 x1;
  25. __int64 MCTimeMultiplayerUpdate = 0;
  26. __int64 MCTimeTerrainUpdate = 0;
  27. __int64 MCTimeCameraUpdate = 0;
  28. __int64 MCTimeWeatherUpdate = 0;
  29. __int64 MCTimePathManagerUpdate = 0;
  30. __int64 MCTimeRunBrainUpdate = 0;
  31. __int64 MCTimePath1Update = 0;
  32. __int64 MCTimePath2Update = 0;
  33. __int64 MCTimePath3Update = 0;
  34. __int64 MCTimePath4Update = 0;
  35. __int64 MCTimePath5Update = 0;
  36. __int64 MCTimeCalcGoal1Update = 0;
  37. extern __int64 MCTimeCalcPath1Update;
  38. extern __int64 MCTimeCalcPath2Update;
  39. extern __int64 MCTimeCalcPath3Update;
  40. extern __int64 MCTimeCalcPath4Update;
  41. extern __int64 MCTimeCalcPath5Update;
  42. __int64 MCTimeCalcGoal2Update = 0;
  43. __int64 MCTimeCalcGoal3Update = 0;
  44. __int64 MCTimeCalcGoal4Update = 0;
  45. __int64 MCTimeCalcGoal5Update = 0;
  46. __int64 MCTimeCalcGoal6Update = 0;
  47. __int64 MCTimeTerrainGeometry = 0;
  48. __int64 MCTimeCraterUpdate = 0;
  49. __int64 MCTimeTXMManagerUpdate = 0;
  50. __int64 MCTimeSensorUpdate = 0;
  51. __int64 MCTimeLOSUpdate = 0;
  52. __int64 MCTimeCollisionUpdate = 0;
  53. __int64 MCTimeMissionScript = 0;
  54. __int64 MCTimeInterfaceUpdate = 0;
  55. __int64 MCTimeMissionTotal = 0;
  56. extern __int64 MCTimeTerrainGeometry ;
  57. extern __int64 MCTimeCraterUpdate ;
  58. extern __int64 MCTimeTXMManagerUpdate ;
  59. extern __int64 MCTimeSensorUpdate ;
  60. extern __int64 MCTimeLOSUpdate ;
  61. extern __int64 MCTimeCollisionUpdate ;
  62. extern __int64 MCTimeMissionScript ;
  63. extern __int64 MCTimeInterfaceUpdate ;
  64. extern __int64 MCTimeMissionTotal;
  65. extern __int64 MCTimeLOSCalc;
  66. extern __int64 MCTimeTerrainObjectsUpdate;
  67. extern __int64 MCTimeMechsUpdate;
  68. extern __int64 MCTimeVehiclesUpdate;
  69. extern __int64 MCTimeTurretsUpdate;
  70. extern __int64 MCTimeAllElseUpdate;
  71. extern __int64 MCTimeTerrainObjectsTL;
  72. extern __int64 MCTimeMechsTL;
  73. extern __int64 MCTimeVehiclesTL;
  74. extern __int64 MCTimeTurretsTL;
  75. extern __int64 MCTimeAnimationCalc;
  76. extern __int64 x;
  77. extern float OneOverProcessorSpeed;
  78. #endif
  79. void Mission::initBareMinimum()
  80. {
  81. long result = 0;
  82. if ( !mcTextureManager )
  83. {
  84. mcTextureManager = new MC_TextureManager;
  85. mcTextureManager->start();
  86. }
  87. //Startup the vertex array pool
  88. mcTextureManager->startVertices(100000);
  89. initTGLForLogistics();
  90. //----------------------------------------------
  91. // Start Appearance Type Lists.
  92. unsigned long spriteHeapSize = 3072000;
  93. if ( !appearanceTypeList )
  94. {
  95. appearanceTypeList = new AppearanceTypeList;
  96. gosASSERT(appearanceTypeList != NULL);
  97. appearanceTypeList->init(spriteHeapSize);
  98. gosASSERT(result == NO_ERR);
  99. }
  100. if ( !weaponEffects )
  101. {
  102. weaponEffects = new WeaponEffects;
  103. weaponEffects->init("Effects");
  104. }
  105. if ( statisticsInitialized == 0 )
  106. {
  107. initializeStatistics();
  108. }
  109. }
  110. void Mission::initializeStatistics()
  111. {
  112. #ifdef LAB_ONLY
  113. //Add Mission Load statistics to GameOS Debugger screen!
  114. MCTimeABLLoad *= OneOverProcessorSpeed;
  115. MCTimeMiscToTeamLoad*= OneOverProcessorSpeed;
  116. MCTimeTeamLoad *= OneOverProcessorSpeed;
  117. MCTimeObjectLoad *= OneOverProcessorSpeed;
  118. MCTimeTerrainLoad *= OneOverProcessorSpeed;
  119. MCTimeMoveLoad *= OneOverProcessorSpeed;
  120. MCTimeMissionABLLoad*= OneOverProcessorSpeed;
  121. MCTimeWarriorLoad *= OneOverProcessorSpeed;
  122. MCTimeMoverPartsLoad*= OneOverProcessorSpeed;
  123. MCTimeObjectiveLoad *= OneOverProcessorSpeed;
  124. MCTimeCommanderLoad *= OneOverProcessorSpeed;
  125. MCTimeMiscLoad *= OneOverProcessorSpeed;
  126. MCTimeGUILoad *= OneOverProcessorSpeed;
  127. //Add Mission Run statistics to GameOS Debugger screen!
  128. StatisticFormat( "" );
  129. StatisticFormat( "MechCommander 2 GameLogic" );
  130. StatisticFormat( "=========================" );
  131. StatisticFormat( "" );
  132. AddStatistic( "Terrain Update", "%", gos_timedata, (void*)&MCTimeTerrainUpdate , 0 );
  133. AddStatistic( "Camera Update", "%", gos_timedata, (void*)&MCTimeCameraUpdate , 0 );
  134. AddStatistic( "Weather Update", "%", gos_timedata, (void*)&MCTimeWeatherUpdate , 0 );
  135. AddStatistic( "RunBrain Path Update", "%", gos_timedata, (void*)&MCTimeRunBrainUpdate , 0 );
  136. AddStatistic( "PathManager Update", "%", gos_timedata, (void*)&MCTimePathManagerUpdate , 0 );
  137. AddStatistic( " Path1 Update", "%", gos_timedata, (void*)&MCTimePath1Update , 0 );
  138. AddStatistic( " Path2 Update", "%", gos_timedata, (void*)&MCTimePath2Update , 0 );
  139. AddStatistic( " Path3 Update", "%", gos_timedata, (void*)&MCTimePath3Update , 0 );
  140. AddStatistic( " Path4 Update", "%", gos_timedata, (void*)&MCTimePath4Update , 0 );
  141. AddStatistic( " Path5 Update", "%", gos_timedata, (void*)&MCTimePath5Update , 0 );
  142. AddStatistic( " CalcPath1 Update", "%", gos_timedata, (void*)&MCTimeCalcPath1Update , 0 );
  143. AddStatistic( " CalcPath2 Update", "%", gos_timedata, (void*)&MCTimeCalcPath2Update , 0 );
  144. AddStatistic( " CalcPath3 Update", "%", gos_timedata, (void*)&MCTimeCalcPath3Update , 0 );
  145. AddStatistic( " CalcPath4 Update", "%", gos_timedata, (void*)&MCTimeCalcPath4Update , 0 );
  146. AddStatistic( " CalcPath5 Update", "%", gos_timedata, (void*)&MCTimeCalcPath5Update , 0 );
  147. AddStatistic( " CalcGoal1 Update", "%", gos_timedata, (void*)&MCTimeCalcGoal1Update , 0 );
  148. AddStatistic( " CalcGoal2 Update", "%", gos_timedata, (void*)&MCTimeCalcGoal2Update , 0 );
  149. AddStatistic( " CalcGoal3 Update", "%", gos_timedata, (void*)&MCTimeCalcGoal3Update , 0 );
  150. AddStatistic( " CalcGoal4 Update", "%", gos_timedata, (void*)&MCTimeCalcGoal4Update , 0 );
  151. AddStatistic( " CalcGoal5 Update", "%", gos_timedata, (void*)&MCTimeCalcGoal5Update , 0 );
  152. AddStatistic( " CalcGoal6 Update", "%", gos_timedata, (void*)&MCTimeCalcGoal6Update , 0 );
  153. AddStatistic( "Terrain Geometry", "%", gos_timedata, (void*)&MCTimeTerrainGeometry , 0 );
  154. AddStatistic( "Interface Update", "%", gos_timedata, (void*)&MCTimeInterfaceUpdate , 0 );
  155. AddStatistic( "Crater Update", "%", gos_timedata, (void*)&MCTimeCraterUpdate , 0 );
  156. AddStatistic( "TXM Mgr Update", "%", gos_timedata, (void*)&MCTimeTXMManagerUpdate , 0 );
  157. AddStatistic( "Sensor Update", "%", gos_timedata, (void*)&MCTimeSensorUpdate , 0 );
  158. AddStatistic( "LOS Update", "%", gos_timedata, (void*)&MCTimeLOSUpdate , 0 );
  159. AddStatistic( "Collision Update", "%", gos_timedata, (void*)&MCTimeCollisionUpdate , 0 );
  160. AddStatistic( "Mission Script", "%", gos_timedata, (void*)&MCTimeMissionScript , 0 );
  161. AddStatistic( "Multiplayer Update", "%", gos_timedata, (void*)&MCTimeMultiplayerUpdate , 0 );
  162. StatisticFormat( "=========================" );
  163. AddStatistic( "TerrainObject Update", "%", gos_timedata, (void*)&MCTimeTerrainObjectsUpdate, 0 );
  164. AddStatistic( "TerrainObject T&L", "%", gos_timedata, (void*)&MCTimeTerrainObjectsTL, 0 );
  165. AddStatistic( "Mech Update", "%", gos_timedata, (void*)&MCTimeMechsUpdate , 0 );
  166. AddStatistic( "Mech T&L", "%", gos_timedata, (void*)&MCTimeMechsTL , 0 );
  167. AddStatistic( "Vehicle Update", "%", gos_timedata, (void*)&MCTimeVehiclesUpdate , 0 );
  168. AddStatistic( "Vehicle T&L", "%", gos_timedata, (void*)&MCTimeVehiclesTL , 0 );
  169. AddStatistic( "Turret Update", "%", gos_timedata, (void*)&MCTimeTurretsUpdate , 0 );
  170. AddStatistic( "Turret T&L", "%", gos_timedata, (void*)&MCTimeTurretsTL , 0 );
  171. AddStatistic( "Everything else Update", "%", gos_timedata, (void*)&MCTimeAllElseUpdate , 0 );
  172. StatisticFormat( "=========================" );
  173. AddStatistic( "Total Mission Time", "%", gos_timedata, (void*)&MCTimeMissionTotal , 0 );
  174. StatisticFormat( "=========================" );
  175. AddStatistic( "Total LOS Calc Time", "%", gos_timedata, (void*)&MCTimeLOSCalc , 0 );
  176. StatisticFormat( "=========================" );
  177. AddStatistic( "Total Anim Calc Time", "%", gos_timedata, (void*)&MCTimeAnimationCalc , 0 );
  178. statisticsInitialized = true;
  179. HeapList::initializeStatistics();
  180. TerrainTextures::initializeStatistics();
  181. #endif
  182. }
  183. void Mission::initTGLForLogistics()
  184. {
  185. //---------------------------------------------------------
  186. unsigned long tglHeapSize = 4 * 1024 * 1024;
  187. //---------------------------------------------------------
  188. //Reset the lightening in case they exitted with a flash on screen!!
  189. TG_Shape::lighteningLevel = 0;
  190. //---------------------------------------------------------
  191. // End the Tiny Geometry Layer Heap for the Mission
  192. if (TG_Shape::tglHeap)
  193. {
  194. //Shut down the TGL RAM pools.
  195. if (colorPool)
  196. {
  197. colorPool->destroy();
  198. delete colorPool;
  199. colorPool = NULL;
  200. }
  201. if (vertexPool)
  202. {
  203. vertexPool->destroy();
  204. delete vertexPool;
  205. vertexPool = NULL;
  206. }
  207. if (facePool)
  208. {
  209. facePool->destroy();
  210. delete facePool;
  211. facePool = NULL;
  212. }
  213. if (shadowPool)
  214. {
  215. shadowPool->destroy();
  216. delete shadowPool;
  217. shadowPool = NULL;
  218. }
  219. if (trianglePool)
  220. {
  221. trianglePool->destroy();
  222. delete trianglePool;
  223. trianglePool = NULL;
  224. }
  225. TG_Shape::tglHeap->destroy();
  226. delete TG_Shape::tglHeap;
  227. TG_Shape::tglHeap = NULL;
  228. }
  229. //------------------------------------------------------
  230. // Start the Tiny Geometry Layer Heap for Logistics
  231. if ( !TG_Shape::tglHeap )
  232. {
  233. TG_Shape::tglHeap = new UserHeap;
  234. TG_Shape::tglHeap->init(tglHeapSize,"TinyGeom");
  235. //Start up the TGL RAM pools.
  236. colorPool = new TG_VertexPool;
  237. colorPool->init(2000);
  238. vertexPool = new TG_GOSVertexPool;
  239. vertexPool->init(2000);
  240. facePool = new TG_DWORDPool;
  241. facePool->init(4000);
  242. shadowPool = new TG_ShadowPool;
  243. shadowPool->init(2000);
  244. trianglePool = new TG_TrianglePool;
  245. trianglePool->init(2000);
  246. }
  247. }
  248. //*************************************************************************************************
  249. // end of file ( mission2.cpp )