fdGrass.pas 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. unit fdGrass;
  2. interface
  3. uses
  4. System.SysUtils,
  5. System.Types,
  6. System.UITypes,
  7. System.Classes,
  8. System.Variants,
  9. System.Math.Vectors,
  10. FMX.Types,
  11. FMX.Controls,
  12. FMX.Forms,
  13. FMX.Graphics,
  14. FMX.Dialogs,
  15. FMX.Viewport3D,
  16. FMX.Objects3D,
  17. FMX.MaterialSources,
  18. FMX.Controls3D,
  19. FMX.Types3D,
  20. FMX.Ani,
  21. GBE.Grass;
  22. type
  23. TFormGrass = class(TForm)
  24. Viewport3D1: TViewport3D;
  25. FloatAnimation1: TFloatAnimation;
  26. TextureMaterialSource: TTextureMaterialSource;
  27. TextureMaterialSource1: TTextureMaterialSource;
  28. TextureMaterialSource2: TTextureMaterialSource;
  29. Dummy: TDummy;
  30. FloatAnimation2: TFloatAnimation;
  31. FloatAnimation3: TFloatAnimation;
  32. procedure FormCreate(Sender: TObject);
  33. private
  34. public
  35. end;
  36. var
  37. FormGrass: TFormGrass;
  38. implementation
  39. {$R *.fmx}
  40. procedure TFormGrass.FormCreate(Sender: TObject);
  41. var
  42. i: Integer;
  43. GBEGrass: TGBEGrass;
  44. begin
  45. Randomize;
  46. for i := 0 to 500 do
  47. begin
  48. GBEGrass := TGBEGrass.Create(Self);
  49. try
  50. GBEGrass.Position.X := random(40)-20;
  51. GBEGrass.Position.z := random(40)-20;
  52. GBEGrass.RotationAngle.y := random(360);
  53. if (i mod 10 = 0) then
  54. GBEGrass.MaterialSource := TextureMaterialSource2
  55. else
  56. begin
  57. if (i mod 2 = 0) then
  58. GBEGrass.MaterialSource := TextureMaterialSource
  59. else
  60. GBEGrass.MaterialSource := TextureMaterialSource1;
  61. end;
  62. GBEGrass.Width := 5;
  63. GBEGrass.Height := 5;
  64. GBEGrass.Depth := 0;
  65. GBEGrass.Parent := Dummy;
  66. GBEGrass.Temps := 0.1;
  67. except
  68. on EOverflow do Exit;
  69. end
  70. end;
  71. end;
  72. end.