Unit1.cpp 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "Unit1.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. #pragma link "GLS.BaseClasses"
  8. #pragma link "GLS.Cadencer"
  9. #pragma link "GLS.Coordinates"
  10. #pragma link "GLS.LensFlare"
  11. #pragma link "GLS.Material"
  12. #pragma link "GLS.Navigator"
  13. #pragma link "GLS.Objects"
  14. #pragma link "GLS.Scene"
  15. #pragma link "GLS.SimpleNavigation"
  16. #pragma link "GLS.SkyDome"
  17. #pragma link "GLS.SceneViewer"
  18. #pragma resource "*.dfm"
  19. TForm1 *Form1;
  20. //---------------------------------------------------------------------------
  21. __fastcall TForm1::TForm1(TComponent* Owner)
  22. : TForm(Owner)
  23. {
  24. }
  25. //---------------------------------------------------------------------------
  26. TGLLibMaterial* __fastcall TForm1::LoadTexture(String Matname, String Filename)
  27. {
  28. GLMaterialLibrary1->AddTextureMaterial(Matname, Filename);
  29. GLMaterialLibrary1->Materials->Items[0]->Material->Texture->Disabled = false;
  30. return GLMaterialLibrary1->Materials->GetLibMaterialByName(Matname);
  31. }
  32. void __fastcall TForm1::FormCreate(TObject *Sender)
  33. {
  34. SetGLSceneMediaDir();
  35. // --------------
  36. // Load graphics
  37. // --------------
  38. // Skybox textures
  39. LoadTexture("Left","icecraterlf.jpg");
  40. GLMaterialLibrary1->Materials->Items[0]->Material->Texture->TextureMode = tmDecal;
  41. LoadTexture("Right","icecraterrt.jpg");
  42. GLMaterialLibrary1->Materials->Items[1]->Material->Texture->TextureMode = tmDecal;
  43. LoadTexture("Top","icecraterup.jpg");
  44. GLMaterialLibrary1->Materials->Items[2]->Material->Texture->TextureMode = tmDecal;
  45. LoadTexture("Bottom","icecraterdn.jpg");
  46. GLMaterialLibrary1->Materials->Items[3]->Material->Texture->TextureMode = tmDecal;
  47. LoadTexture("Front","icecraterft.jpg");
  48. GLMaterialLibrary1->Materials->Items[4]->Material->Texture->TextureMode = tmDecal;
  49. LoadTexture("Back","icecraterbk.jpg");
  50. GLMaterialLibrary1->Materials->Items[5]->Material->Texture->TextureMode = tmDecal;
  51. // Add transparency to clouds
  52. LoadTexture("Clouds","Clouds.jpg")->Material->BlendingMode = bmTransparency;
  53. LoadTexture("Clouds","Clouds.jpg")->Material->FrontProperties->Diffuse->Alpha = 0.2;
  54. // scale the clouds texture
  55. LoadTexture("Clouds","Clouds.jpg")->TextureScale->X = 8;
  56. LoadTexture("Clouds","Clouds.jpg")->TextureScale->Y = 8;
  57. // bricks
  58. LoadTexture("Bricks","rawwall.jpg")->TextureScale->X = 1;
  59. LoadTexture("Bricks","rawwall.jpg")->TextureScale->Y = 32;
  60. LoadTexture("Bricks","rawwall.jpg")->Material->Texture->TextureMode = tmModulate;
  61. LoadTexture("Bricks2","marbletiles.jpg")->TextureScale->X = 6;
  62. LoadTexture("Bricks2","marbletiles.jpg")->TextureScale->Y = 1;
  63. LoadTexture("Bricks2","marbletiles.jpg")->Material->Texture->TextureMode = tmModulate;
  64. //Moon
  65. LoadTexture("Moon","unwrapped moon.jpg")->Material->Texture->TextureMode = tmModulate;
  66. //-----------------------------------------
  67. // Assign materials to objects
  68. //-----------------------------------------
  69. GLCube1->Material->LibMaterialName = "Bricks";
  70. GLCube11->Material->LibMaterialName = "Bricks";
  71. GLCube111->Material->LibMaterialName = "Bricks";
  72. GLCube112->Material->LibMaterialName = "Bricks";
  73. GLCube2->Material->LibMaterialName = "Bricks2";
  74. GLCube21->Material->LibMaterialName = "Bricks2";
  75. GLCube21->Material->LibMaterialName = "Bricks2";
  76. GLCube211->Material->LibMaterialName = "Bricks2";
  77. GLCube212->Material->LibMaterialName = "Bricks2";
  78. GLSphere1->Material->LibMaterialName = "Moon";
  79. GLSphere2->Material->LibMaterialName = "Moon";
  80. GLUserInterface1->MouseLookActive = true;
  81. }
  82. //---------------------------------------------------------------------------
  83. void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
  84. const double newTime)
  85. {
  86. // Make clouds Texture slide
  87. GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")->TextureOffset->X =
  88. GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")->TextureOffset->X + deltaTime * 0.02;
  89. GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")->TextureOffset->Y =
  90. GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")->TextureOffset->Y + deltaTime * 0.03;
  91. // Rotate moons
  92. GLSphere1->Turn(deltaTime * 7);
  93. GLSphere2->Turn(deltaTime * 10);
  94. HandleKeys(deltaTime);
  95. GLUserInterface1->MouseLook();
  96. GLUserInterface1->MouseUpdate();
  97. GLSceneViewer1->Invalidate();
  98. }
  99. //---------------------------------------------------------------------------
  100. void __fastcall TForm1::HandleKeys(double d)
  101. {
  102. if (IsKeyDown('W')||IsKeyDown('Z'))
  103. GLCamera1->Move(d);
  104. if (IsKeyDown('S'))
  105. GLCamera1->Move(-d);
  106. if (IsKeyDown('A') || IsKeyDown('A'))
  107. GLCamera1->Slide(-d);
  108. if (IsKeyDown('D'))
  109. GLCamera1->Slide(d);
  110. if(IsKeyDown(VK_SPACE))
  111. Castle->Visible = !Castle->Visible;
  112. if(IsKeyDown(VK_ESCAPE))
  113. Close();
  114. }