Unit1.cpp 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #pragma package(smart_init)
  5. #include "Unit1.h"
  6. //---------------------------------------------------------------------------
  7. #pragma link "GLS.File3DS"
  8. #pragma link "GLS.FileJPEG"
  9. #pragma link "GLS.SimpleNavigation"
  10. #pragma link "GLS.Coordinates"
  11. #pragma link "GLS.FPSMovement"
  12. #pragma link "GLS.BaseClasses"
  13. #pragma link "GLS.Cadencer"
  14. #pragma link "GLS.FPSMovement"
  15. #pragma link "GLS.Material"
  16. #pragma link "GLS.Navigator"
  17. #pragma link "GLS.Objects"
  18. #pragma link "GLS.Scene"
  19. #pragma link "GLS.SimpleNavigation"
  20. #pragma link "GLS.VectorFileObjects"
  21. #pragma link "GLS.SceneViewer"
  22. #pragma resource "*.dfm"
  23. TForm1 *Form1;
  24. TGLBFPSMovement *behav, *behav2;
  25. double yangle = 90;
  26. double xangle = 0;
  27. bool WireFrame;
  28. //---------------------------------------------------------------------------
  29. __fastcall TForm1::TForm1(TComponent * Owner):TForm(Owner)
  30. {
  31. SetGLSceneMediaDir();
  32. Map1->LoadFromFile("map.3ds");
  33. Map1->BuildOctree(3);
  34. Map1->Up->SetVector(0, 1, 0);
  35. Map2->LoadFromFile("beer.3ds");
  36. Map2->BuildOctree(3);
  37. ShowCursor(false);
  38. SetCursorPos(Vcl::Forms::Screen->Width / 2, Vcl::Forms::Screen->Height / 2);
  39. behav = GetFPSMovement(Player);
  40. behav2 = GetFPSMovement(Bot);
  41. }
  42. //---------------------------------------------------------------------------
  43. void __fastcall TForm1::FormKeyDown(TObject * Sender, WORD & Key,
  44. TShiftState Shift)
  45. {
  46. // if(Key=Ord("R") ) resetScene;
  47. if(Key == VK_ESCAPE)
  48. Close();
  49. //show/hide arrows
  50. if(Key == VK_F1)
  51. behav->ShowArrows = !behav->ShowArrows;
  52. //pause / unpause
  53. if(Key == VK_PAUSE)
  54. GLCadencer1->Enabled = !GLCadencer1->Enabled;
  55. //first person
  56. if(Key == VK_F2)
  57. GLSceneViewer1->Camera = FirstPersonCamera;
  58. //third person
  59. if(Key == VK_F3)
  60. GLSceneViewer1->Camera = ThirdPersonCamera;
  61. // solid / wireframe
  62. if(IsKeyDown(VK_F5))
  63. {
  64. WireFrame = !WireFrame;
  65. if(WireFrame)
  66. {
  67. Map1->UseMeshMaterials = false;
  68. Map1->Material->PolygonMode = pmLines;
  69. Map2->UseMeshMaterials = false;
  70. Map2->Material->PolygonMode = pmLines;
  71. }
  72. else
  73. {
  74. Map1->UseMeshMaterials = true;
  75. Map1->Material->PolygonMode = pmFill;
  76. Map2->UseMeshMaterials = true;
  77. Map2->Material->PolygonMode = pmFill;
  78. }
  79. }
  80. }
  81. //---------------------------------------------------------------------------
  82. void __fastcall TForm1::GLCadencer1Progress(TObject * Sender,
  83. const double deltaTime,
  84. const double newTime)
  85. {
  86. float MovementScale = MovManager->MovementScale;
  87. //) update position according to Keys being pressed
  88. if(IsKeyDown('W') || IsKeyDown('Z'))
  89. behav->MoveForward(MovementScale * deltaTime);
  90. if(IsKeyDown('S'))
  91. behav->MoveForward(-MovementScale * deltaTime);
  92. if(IsKeyDown('A') || IsKeyDown('Q'))
  93. behav->StrafeHorizontal(-MovementScale * deltaTime);
  94. if(IsKeyDown('D'))
  95. behav->StrafeHorizontal(MovementScale * deltaTime);
  96. //move up/down (f||debugging)
  97. if(IsKeyDown(VK_PRIOR) || IsKeyDown(VK_SPACE))
  98. behav->StrafeVertical(MovementScale * deltaTime);
  99. if(IsKeyDown(VK_NEXT))
  100. behav->StrafeVertical(-MovementScale * deltaTime);
  101. //move bot
  102. if(IsKeyDown('I'))
  103. behav2->MoveForward(MovementScale * deltaTime);
  104. if(IsKeyDown('K'))
  105. behav2->MoveForward(-MovementScale * deltaTime);
  106. if(IsKeyDown('J'))
  107. behav2->StrafeHorizontal(-MovementScale * deltaTime);
  108. if(IsKeyDown('L'))
  109. behav2->StrafeHorizontal(MovementScale * deltaTime);
  110. if(IsKeyDown('O'))
  111. behav2->StrafeVertical(MovementScale * deltaTime);
  112. if(IsKeyDown('P'))
  113. behav->StrafeVertical(-MovementScale * deltaTime);
  114. if(IsKeyDown(VK_LEFT))
  115. behav->TurnHorizontal(-70 * deltaTime);
  116. if(IsKeyDown(VK_RIGHT))
  117. behav->TurnHorizontal(70 * deltaTime);
  118. if(IsKeyDown(VK_UP))
  119. behav->TurnVertical(-70 * deltaTime);
  120. if(IsKeyDown(VK_DOWN))
  121. behav->TurnVertical(70 * deltaTime);
  122. //update mouse view
  123. xangle = Mouse->CursorPos.x - Vcl::Forms::Screen->Width / 2;
  124. yangle = Mouse->CursorPos.y - Vcl::Forms::Screen->Height / 2;
  125. SetCursorPos(Vcl::Forms::Screen->Width / 2, Vcl::Forms::Screen->Height / 2);
  126. behav->TurnHorizontal(xangle * 40 * deltaTime);
  127. behav->TurnVertical(-yangle * 20 * deltaTime);
  128. GLSceneViewer1->Invalidate();
  129. }
  130. //---------------------------------------------------------------------------