123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #pragma hdrstop
- #pragma package(smart_init)
- #include "Unit1.h"
- #pragma link "GLFile3DS"
- #pragma link "GLFileJPEG"
- //---------------------------------------------------------------------------
- #pragma link "GLSimpleNavigation"
- #pragma link "GLCoordinates"
- #pragma link "GLCrossPlatform"
- #pragma link "GLFPSMovement"
- #pragma link "GLBaseClasses"
- #pragma link "GLCadencer"
- #pragma link "GLCoordinates"
- #pragma link "GLCrossPlatform"
- #pragma link "GLFPSMovement"
- #pragma link "GLMaterial"
- #pragma link "GLNavigator"
- #pragma link "GLObjects"
- #pragma link "GLScene"
- #pragma link "GLSimpleNavigation"
- #pragma link "GLVectorFileObjects"
- #pragma link "GLWin32Viewer"
- #pragma resource "*.dfm"
- TForm1 *Form1;
- TGLBFPSMovement *behav, *behav2;
- double yangle = 90;
- double xangle = 0;
- bool WireFrame;
- //---------------------------------------------------------------------------
- __fastcall TForm1::TForm1(TComponent * Owner):TForm(Owner)
- {
- String MediaPath = ExtractFilePath(ParamStr(0));
- int I = MediaPath.Pos("Samples");
- if (I != 0) {
- MediaPath.Delete(I+8,MediaPath.Length()-I);
- SetCurrentDir(MediaPath+"Media\\");
- }
- Map1->LoadFromFile("map.3ds");
- Map1->BuildOctree(3);
- Map1->Up->SetVector(0, 1, 0);
- Map2->LoadFromFile("beer.3ds");
- Map2->BuildOctree(3);
- ShowCursor(false);
- SetCursorPos(Screen->Width / 2, Screen->Height / 2);
- behav = GetFPSMovement(Player);
- behav2 = GetFPSMovement(Bot);
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::FormKeyDown(TObject * Sender, WORD & Key,
- TShiftState Shift)
- {
- // if(Key=Ord("R") ) resetScene;
- if(Key == VK_ESCAPE)
- Close();
- //show/hide arrows
- if(Key == VK_F1)
- behav->ShowArrows = !behav->ShowArrows;
- //pause / unpause
- if(Key == VK_PAUSE)
- GLCadencer1->Enabled = !GLCadencer1->Enabled;
- //first person
- if(Key == VK_F2)
- GLSceneViewer1->Camera = FirstPersonCamera;
- //third person
- if(Key == VK_F3)
- GLSceneViewer1->Camera = ThirdPersonCamera;
- // solid / wireframe
- if(IsKeyDown(VK_F5))
- {
- WireFrame = !WireFrame;
- if(WireFrame)
- {
- Map1->UseMeshMaterials = false;
- Map1->Material->PolygonMode = pmLines;
- Map2->UseMeshMaterials = false;
- Map2->Material->PolygonMode = pmLines;
- }
- else
- {
- Map1->UseMeshMaterials = true;
- Map1->Material->PolygonMode = pmFill;
- Map2->UseMeshMaterials = true;
- Map2->Material->PolygonMode = pmFill;
- }
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TForm1::GLCadencer1Progress(TObject * Sender,
- const double deltaTime,
- const double newTime)
- {
- float MovementScale = MovManager->MovementScale;
- //) update position according to Keys being pressed
- if(IsKeyDown('W') || IsKeyDown('Z'))
- behav->MoveForward(MovementScale * deltaTime);
- if(IsKeyDown('S'))
- behav->MoveForward(-MovementScale * deltaTime);
- if(IsKeyDown('A') || IsKeyDown('Q'))
- behav->StrafeHorizontal(-MovementScale * deltaTime);
- if(IsKeyDown('D'))
- behav->StrafeHorizontal(MovementScale * deltaTime);
- //move up/down (f||debugging)
- if(IsKeyDown(VK_PRIOR) || IsKeyDown(VK_SPACE))
- behav->StrafeVertical(MovementScale * deltaTime);
- if(IsKeyDown(VK_NEXT))
- behav->StrafeVertical(-MovementScale * deltaTime);
- //move bot
- if(IsKeyDown('I'))
- behav2->MoveForward(MovementScale * deltaTime);
- if(IsKeyDown('K'))
- behav2->MoveForward(-MovementScale * deltaTime);
- if(IsKeyDown('J'))
- behav2->StrafeHorizontal(-MovementScale * deltaTime);
- if(IsKeyDown('L'))
- behav2->StrafeHorizontal(MovementScale * deltaTime);
- if(IsKeyDown('O'))
- behav2->StrafeVertical(MovementScale * deltaTime);
- if(IsKeyDown('P'))
- behav->StrafeVertical(-MovementScale * deltaTime);
- if(IsKeyDown(VK_LEFT))
- behav->TurnHorizontal(-70 * deltaTime);
- if(IsKeyDown(VK_RIGHT))
- behav->TurnHorizontal(70 * deltaTime);
- if(IsKeyDown(VK_UP))
- behav->TurnVertical(-70 * deltaTime);
- if(IsKeyDown(VK_DOWN))
- behav->TurnVertical(70 * deltaTime);
- //update mouse view
- xangle = Mouse->CursorPos.x - Screen->Width / 2;
- yangle = Mouse->CursorPos.y - Screen->Height / 2;
- SetCursorPos(Screen->Width / 2, Screen->Height / 2);
- behav->TurnHorizontal(xangle * 40 * deltaTime);
- behav->TurnVertical(-yangle * 20 * deltaTime);
- GLSceneViewer1->Invalidate();
- }
- //---------------------------------------------------------------------------
|