fThorD.pas 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. unit fThorD;
  2. interface
  3. uses
  4. Winapi.OpenGL,
  5. System.SysUtils,
  6. System.Classes,
  7. Vcl.Graphics,
  8. Vcl.Controls,
  9. Vcl.Forms,
  10. Vcl.Dialogs,
  11. Vcl.ExtCtrls,
  12. Vcl.StdCtrls,
  13. Vcl.ComCtrls,
  14. Vcl.Imaging.Jpeg,
  15. GLS.FireFX,
  16. GLS.Cadencer,
  17. GLS.Scene,
  18. GLS.Objects,
  19. GLS.Behaviours,
  20. Stage.VectorGeometry,
  21. GLS.ThorFX,
  22. GLS.SkyDome,
  23. GLS.Graph,
  24. Stage.VectorTypes,
  25. GLS.SceneViewer,
  26. GLS.Coordinates,
  27. GLS.BaseClasses,
  28. GLS.SimpleNavigation,
  29. Stage.Utils;
  30. type
  31. TFormThor = class(TForm)
  32. GLScene1: TGLScene;
  33. GLSceneViewer1: TGLSceneViewer;
  34. GLCadencer1: TGLCadencer;
  35. GLCamera1: TGLCamera;
  36. GLThorFXManager1: TGLThorFXManager;
  37. ThorCube: TGLCube;
  38. TargetCube: TGLCube;
  39. Panel1: TPanel;
  40. SkyDome1: TGLSkyDome;
  41. Label1: TLabel;
  42. DistanceBar: TTrackBar;
  43. Label5: TLabel;
  44. GSbar: TTrackBar;
  45. Label6: TLabel;
  46. GAbar: TTrackBar;
  47. Label3: TLabel;
  48. WildBar: TTrackBar;
  49. Label4: TLabel;
  50. VibBar: TTrackBar;
  51. SpinBox: TCheckBox;
  52. CoreBox: TCheckBox;
  53. Objects: TGLDummyCube;
  54. GLLightSource1: TGLLightSource;
  55. HeightField1: TGLHeightField;
  56. Memo1: TMemo;
  57. PauseBox: TCheckBox;
  58. GLSimpleNavigation1: TGLSimpleNavigation;
  59. procedure GSbarChange(Sender: TObject);
  60. procedure GAbarChange(Sender: TObject);
  61. procedure WildBarChange(Sender: TObject);
  62. procedure VibBarChange(Sender: TObject);
  63. procedure DistanceBarChange(Sender: TObject);
  64. procedure CoreBoxClick(Sender: TObject);
  65. procedure GLThorFXManager1CalcPoint(Sender: TObject; PointNo: Integer;
  66. var x, y, z: Single);
  67. procedure PauseBoxClick(Sender: TObject);
  68. procedure FormCreate(Sender: TObject);
  69. procedure HeightField1GetHeight(const x, y: Single; var z: Single;
  70. var color: TVector4f; var texPoint: TTexPoint);
  71. private
  72. public
  73. end;
  74. var
  75. FormThor: TFormThor;
  76. implementation
  77. {$R *.DFM}
  78. procedure TFormThor.FormCreate(Sender: TObject);
  79. begin
  80. var Path: TFileName := GetCurrentAssetPath();
  81. SetCurrentDir(Path + '\texture');
  82. HeightField1.Material.Texture.Image.LoadFromFile('marbletiles.jpg');
  83. end;
  84. procedure TFormThor.GSbarChange(Sender: TObject);
  85. begin
  86. GLThorFXManager1.GlowSize:=GSbar.Position/50;
  87. end;
  88. procedure TFormThor.GAbarChange(Sender: TObject);
  89. begin
  90. GLThorFXManager1.InnerColor.Alpha:=GAbar.Position/50;
  91. end;
  92. procedure TFormThor.WildBarChange(Sender: TObject);
  93. begin
  94. GLThorFXManager1.Wildness:=WildBar.Position/5;
  95. end;
  96. procedure TFormThor.VibBarChange(Sender: TObject);
  97. begin
  98. GLThorFXManager1.Vibrate:=VibBar.Position/10;
  99. end;
  100. procedure TFormThor.DistanceBarChange(Sender: TObject);
  101. var
  102. Dist, NewDist,cx,cy,cz :single;
  103. begin
  104. Dist:=GLCamera1.DistanceToTarget;
  105. cx:=GLCamera1.Position.x;
  106. cy:=GLCamera1.Position.y;
  107. cz:=GLCamera1.Position.z;
  108. NewDist:=DistanceBar.position;
  109. GLCamera1.Position.x:=cx/dist*NewDist;
  110. GLCamera1.Position.y:=cy/dist*NewDist;
  111. GLCamera1.Position.z:=cz/dist*NewDist;
  112. end;
  113. procedure TFormThor.CoreBoxClick(Sender: TObject);
  114. begin
  115. GLThorFXManager1.Core:=CoreBox.Checked;
  116. end;
  117. procedure TFormThor.GLThorFXManager1CalcPoint(Sender: TObject;
  118. PointNo: Integer; var x, y, z: Single);
  119. var
  120. place,spin, scale :single;
  121. begin
  122. //---------------Add user-definable formula to individual points in thor-object-------------
  123. if spinBox.Checked then with GLThorFXManager1 do begin
  124. place:=PointNo/MaxPoints;
  125. Spin:=(place*pi)*10+(GLCadencer1.CurrentTime*20);
  126. scale:=Sin(place*pi)/2;
  127. y:=y+Sin(spin)*scale;
  128. x:=x+Cos(spin)*scale;
  129. end;
  130. end;
  131. procedure TFormThor.PauseBoxClick(Sender: TObject);
  132. begin
  133. GLThorFXManager1.Disabled:=PauseBox.checked;
  134. end;
  135. procedure TFormThor.HeightField1GetHeight(const x, y: Single; var z: Single;
  136. var color: TVector4f; var texPoint: TTexPoint);
  137. begin
  138. Z:=0;
  139. end;
  140. end.