gamecam.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. //---------------------------------------------------------------------------
  2. //
  3. // GameCam.h -- File contains the Game camera class definitions
  4. //
  5. // MechCommander 2
  6. //
  7. //---------------------------------------------------------------------------//
  8. // Copyright (C) Microsoft Corporation. All rights reserved. //
  9. //===========================================================================//
  10. #ifndef GAMECAM_H
  11. #define GAMECAM_H
  12. //---------------------------------------------------------------------------
  13. // Include Files
  14. #ifndef MCLIB_H
  15. #include "mclib.h"
  16. #endif
  17. #ifndef GAMEOBJ_H
  18. #include "gameobj.h"
  19. #endif
  20. #ifndef OBJMGR_H
  21. #include "objmgr.h"
  22. #endif
  23. //---------------------------------------------------------------------------
  24. class GameCamera : public Camera
  25. {
  26. //Data Members
  27. //-------------
  28. protected:
  29. GameObjectPtr targetObject;
  30. AppearancePtr compass;
  31. bool drawCompass;
  32. float lastShadowLightPitch;
  33. public:
  34. virtual void init (void)
  35. {
  36. Camera::init();
  37. targetObject = NULL;
  38. compass = NULL;
  39. lastShadowLightPitch = 0.0f;
  40. DWORD szData = sizeof(drawCompass);
  41. gos_LoadDataFromRegistry("CompassStatus", &drawCompass, &szData);
  42. //Check if data not in registry yet. Goober!
  43. if (!szData)
  44. drawCompass = true;
  45. }
  46. ~GameCamera (void)
  47. {
  48. destroy();
  49. }
  50. void destroy (void);
  51. virtual void render (void);
  52. virtual long activate (void);
  53. virtual long update (void);
  54. virtual void moveLeft(float amount)
  55. {
  56. targetObject = NULL;
  57. Camera::moveLeft(amount);
  58. }
  59. virtual void moveRight(float amount)
  60. {
  61. targetObject = NULL;
  62. Camera::moveRight(amount);
  63. }
  64. virtual void moveUp(float amount)
  65. {
  66. targetObject = NULL;
  67. Camera::moveUp(amount);
  68. }
  69. virtual void moveDown(float amount)
  70. {
  71. targetObject = NULL;
  72. Camera::moveDown(amount);
  73. }
  74. virtual void setTarget (GameObjectPtr target)
  75. {
  76. targetObject = target;
  77. if( target )
  78. {
  79. //float newRotation = targetObject->getRotation();
  80. //setCameraRotation(newRotation,newRotation);
  81. }
  82. }
  83. GameObject* getTarget()
  84. {
  85. return targetObject;
  86. }
  87. virtual void allTight (void)
  88. {
  89. long i=0;
  90. GameObjectPtr mvt = NULL;
  91. while (i<ObjectManager->getNumGoodMovers())
  92. {
  93. mvt = ObjectManager->getGoodMover(i);
  94. if (!mvt->isDestroyed() && !mvt->isDisabled())
  95. break;
  96. i++;
  97. }
  98. tiltNormal();
  99. setTarget(mvt);
  100. ZoomTight();
  101. }
  102. void toggleCompass()
  103. {
  104. drawCompass ^= true;
  105. //Save current Compass state to registry.
  106. // Saves us having to put it into the prefs files.
  107. DWORD szData = sizeof(drawCompass);
  108. gos_SaveDataToRegistry( "CompassStatus", &drawCompass, szData );
  109. }
  110. };
  111. //---------------------------------------------------------------------------
  112. extern CameraPtr eye; //Global Instance of the current camera
  113. //---------------------------------------------------------------------------
  114. #endif
  115. //---------------------------------------------------------------------------
  116. //
  117. // Edit log
  118. //
  119. //---------------------------------------------------------------------------