fdClouds.pas 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. unit fdClouds;
  2. interface
  3. uses
  4. System.SysUtils,
  5. System.Types,
  6. System.UITypes,
  7. System.Classes,
  8. System.Variants,
  9. FMX.Types,
  10. FMX.Controls,
  11. FMX.Forms,
  12. FMX.Graphics,
  13. FMX.Dialogs,
  14. System.Math.Vectors,
  15. FMX.MaterialSources,
  16. FMX.Controls3D,
  17. FMX.Objects3D,
  18. FMX.Viewport3D,
  19. FMX.Ani,
  20. FMX.Controls.Presentation,
  21. FMX.StdCtrls,
  22. FMX.Edit,
  23. FMX.EditBox,
  24. FMX.SpinBox,
  25. FMX.Layouts,
  26. GBE.Clouds;
  27. type
  28. TFormClouds = class(TForm)
  29. Viewport3D1: TViewport3D;
  30. GBEClouds1: TGBEClouds;
  31. TextureMaterialSource1: TTextureMaterialSource;
  32. TextureMaterialSource2: TTextureMaterialSource;
  33. TextureMaterialSource3: TTextureMaterialSource;
  34. FloatAnimation1: TFloatAnimation;
  35. Layout1: TLayout;
  36. ArcDial1: TArcDial;
  37. SpinBox1: TSpinBox;
  38. SpinBox2: TSpinBox;
  39. Camera1: TCamera;
  40. procedure FormCreate(Sender: TObject);
  41. procedure FloatAnimation1Process(Sender: TObject);
  42. procedure ArcDial1Change(Sender: TObject);
  43. procedure SpinBox1Change(Sender: TObject);
  44. procedure SpinBox2Change(Sender: TObject);
  45. private
  46. public
  47. end;
  48. var
  49. FormClouds: TFormClouds;
  50. implementation
  51. {$R *.fmx}
  52. procedure TFormClouds.FormCreate(Sender: TObject);
  53. begin
  54. GBEClouds1.AddTextureCloud(TextureMaterialSource1);
  55. GBEClouds1.AddTextureCloud(TextureMaterialSource2);
  56. GBEClouds1.AddTextureCloud(TextureMaterialSource3);
  57. GBEClouds1.NbClouds := 15;
  58. GBEClouds1.WindSpeed := 0.1;
  59. GBEClouds1.Limits := 100;
  60. GBEClouds1.ActiveWind := true;
  61. FloatAnimation1.Start;
  62. end;
  63. procedure TFormClouds.ArcDial1Change(Sender: TObject);
  64. begin
  65. GBEClouds1.RotationAngle.Y := ArcDial1.Value;
  66. end;
  67. procedure TFormClouds.FloatAnimation1Process(Sender: TObject);
  68. begin
  69. GBEClouds1.MoveClouds;
  70. end;
  71. procedure TFormClouds.SpinBox1Change(Sender: TObject);
  72. begin
  73. if SpinBox1.Value > 0 then
  74. GBEClouds1.NbClouds := Round(SpinBox1.Value);
  75. end;
  76. procedure TFormClouds.SpinBox2Change(Sender: TObject);
  77. begin
  78. GBEClouds1.WindSpeed := 0.1 * SpinBox2.Value;
  79. end;
  80. end.