Unit1.cpp 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4. #include "Unit1.h"
  5. //---------------------------------------------------------------------------
  6. #pragma package(smart_init)
  7. #pragma link "GLS.AsyncTimer"
  8. #pragma link "GLS.BaseClasses"
  9. #pragma link "GLS.Behaviours"
  10. #pragma link "GLS.Cadencer"
  11. #pragma link "GLS.Coordinates"
  12. #pragma link "GLS.GeomObjects"
  13. #pragma link "GLS.Graph"
  14. #pragma link "GLS.Material"
  15. #pragma link "GLS.Objects"
  16. #pragma link "GLS.Scene"
  17. #pragma link "GLS.SceneViewer"
  18. #pragma link "GLS.zBuffer"
  19. #pragma resource "*.dfm"
  20. TForm1 *Form1;
  21. //---------------------------------------------------------------------------
  22. __fastcall TForm1::TForm1(TComponent* Owner)
  23. : TForm(Owner)
  24. {
  25. }
  26. //---------------------------------------------------------------------------
  27. void __fastcall TForm1::FormCreate(TObject *Sender)
  28. {
  29. SetGLSceneMediaDir();
  30. GLMaterialLibrary1->Materials->Items[2]->Material->Texture->Image->LoadFromFile("marbletiles.jpg");
  31. GLMaterialLibrary1->Materials->Items[2]->Material->Texture->Disabled = false;
  32. GLMaterialLibrary1->Materials->Items[3]->Material->Texture->Image->LoadFromFile("beigemarble.jpg");
  33. GLMaterialLibrary1->Materials->Items[3]->Material->Texture->Disabled = false;
  34. RotateBoxClick(Sender);
  35. }
  36. //---------------------------------------------------------------------------
  37. void __fastcall TForm1::ViewerMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
  38. int X, int Y)
  39. {
  40. mx = X; my = Y;
  41. ActiveControl = DistanceBar;
  42. }
  43. //---------------------------------------------------------------------------
  44. void __fastcall TForm1::ViewerMouseMove(TObject *Sender, TShiftState Shift, int X,
  45. int Y)
  46. {
  47. if (Shift.Contains(ssLeft) || Shift.Contains(ssRight))
  48. GLCamera1->MoveAroundTarget(my-Y, mx-X);
  49. mx = X; my = Y;
  50. GLCadencer1->Progress();
  51. Viewer->Refresh();
  52. Caster->Refresh();
  53. }
  54. //---------------------------------------------------------------------------
  55. void __fastcall TForm1::CasterMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
  56. int X, int Y)
  57. {
  58. mx2 = X; my2 = Y;
  59. ActiveControl = DistanceBar2;
  60. }
  61. //---------------------------------------------------------------------------
  62. void __fastcall TForm1::CasterMouseMove(TObject *Sender, TShiftState Shift, int X,
  63. int Y)
  64. {
  65. if (Shift.Contains(ssLeft) || Shift.Contains(ssRight))
  66. GLCamera2->MoveAroundTarget(my2-Y, mx2-X);
  67. mx2 = X; my2 = Y;
  68. if (Shift.Contains(ssLeft) || Shift.Contains(ssRight))
  69. {
  70. Shadows1->CastShadow();
  71. GLCadencer1->Progress();
  72. Viewer->Refresh();
  73. Caster->Refresh();
  74. }
  75. }
  76. //---------------------------------------------------------------------------
  77. void __fastcall TForm1::DistanceBarChange(TObject *Sender)
  78. {
  79. float Dist = GLCamera1->DistanceToTarget();
  80. float NewDist = ((float)DistanceBar->Position/4)*((float)DistanceBar->Position/4)+1;
  81. GLCamera1->Position->AsAffineVector = VectorScale(GLCamera1->Position->AsAffineVector, (float)NewDist/Dist);
  82. }
  83. //---------------------------------------------------------------------------
  84. void __fastcall TForm1::DistanceBar2Change(TObject *Sender)
  85. {
  86. float Dist = GLCamera2->DistanceToTarget();
  87. float NewDist = ((float)DistanceBar2->Position/4)*((float)DistanceBar2->Position/4)+1;
  88. GLCamera2->Position->AsAffineVector = VectorScale(GLCamera2->Position->AsAffineVector, (float)NewDist/Dist);
  89. Shadows1->CastShadow();
  90. Caster->Refresh();
  91. }
  92. //---------------------------------------------------------------------------
  93. void __fastcall TForm1::CastBtnClick(TObject *Sender)
  94. {
  95. double RefTime = GLCadencer1->GetCurrenttime();
  96. Shadows1->CastShadow();
  97. Viewer->Refresh();
  98. TimeLbl->Caption = IntToStr(Round((GLCadencer1->GetCurrenttime()-(int)RefTime)*100));
  99. }
  100. //---------------------------------------------------------------------------
  101. void __fastcall TForm1::ViewerMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
  102. int X, int Y)
  103. {
  104. Viewer->Visible = true;
  105. }
  106. //---------------------------------------------------------------------------
  107. void __fastcall TForm1::CasterMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
  108. int X, int Y)
  109. {
  110. Shadows1->CastShadow();
  111. }
  112. //---------------------------------------------------------------------------
  113. void __fastcall TForm1::FadeBoxClick(TObject *Sender)
  114. {
  115. Shadows1->DepthFade = FadeBox->Checked;
  116. }
  117. //---------------------------------------------------------------------------
  118. void __fastcall TForm1::HeightField1GetHeight(const float x, const float y, float &z,
  119. TVector4f &Color, TTexPoint &TexPoint)
  120. {
  121. z = 0;
  122. }
  123. //---------------------------------------------------------------------------
  124. void __fastcall TForm1::FrustBoxClick(TObject *Sender)
  125. {
  126. Shadows1->FrustShadow = FrustBox->Checked;
  127. }
  128. //---------------------------------------------------------------------------
  129. void __fastcall TForm1::AsyncTimer1Timer(TObject *Sender)
  130. {
  131. Caption = "Shadows " + Format("%.2f FPS",
  132. ARRAYOFCONST ((Viewer->FramesPerSecond())));
  133. Viewer->ResetPerformanceMonitor();
  134. }
  135. //---------------------------------------------------------------------------
  136. void __fastcall TForm1::RotateBoxClick(TObject *Sender)
  137. {
  138. //GLAsyncTimer1->Enabled =RotateBox->Checked;
  139. GLCadencer1->Enabled = RotateBox->Checked;
  140. }
  141. //---------------------------------------------------------------------------
  142. void __fastcall TForm1::ShadowOnBoxClick(TObject *Sender)
  143. {
  144. Shadows1->Visible = ShadowOnBox->Checked;
  145. }
  146. //---------------------------------------------------------------------------
  147. void __fastcall TForm1::SoftBoxClick(TObject *Sender)
  148. {
  149. Shadows1->Soft = SoftBox->Checked;
  150. }
  151. //---------------------------------------------------------------------------
  152. void __fastcall TForm1::SkyShadBoxClick(TObject *Sender)
  153. {
  154. Shadows1->SkyShadow = SkyShadBox->Checked;
  155. }
  156. //---------------------------------------------------------------------------
  157. void __fastcall TForm1::FocalChange(TObject *Sender)
  158. {
  159. GLCamera2->FocalLength = Focal->Position;
  160. MemView->Render();
  161. Caster->Refresh();
  162. Shadows1->CastShadow();
  163. Viewer->Refresh();
  164. }
  165. //---------------------------------------------------------------------------
  166. void __fastcall TForm1::dovBarChange(TObject *Sender)
  167. {
  168. GLCamera2->DepthOfView = dovBar->Position;
  169. MemView->Render();
  170. Caster->Refresh();
  171. Shadows1->CastShadow();
  172. Viewer->Refresh();
  173. }
  174. //---------------------------------------------------------------------------
  175. void __fastcall TForm1::AlphaBarChange(TObject *Sender)
  176. {
  177. Shadows1->Color->Alpha = (float)AlphaBar->Position/256;
  178. }
  179. //---------------------------------------------------------------------------
  180. void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
  181. const double newTime)
  182. {
  183. Shadows1->CastShadow();
  184. }
  185. //---------------------------------------------------------------------------