fPFXGalleryD.pas 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. unit fPFXGalleryD;
  2. interface
  3. uses
  4. Winapi.Windows,
  5. Winapi.OpenGL,
  6. System.SysUtils,
  7. System.Classes,
  8. Vcl.Graphics,
  9. Vcl.Controls,
  10. Vcl.Forms,
  11. Vcl.ExtCtrls,
  12. Vcl.StdCtrls,
  13. Vcl.Imaging.Jpeg,
  14. Stage.VectorTypes,
  15. Stage.Keyboard,
  16. Stage.VectorGeometry,
  17. GLS.Coordinates,
  18. GLS.BaseClasses,
  19. GLS.XCollection,
  20. Stage.Utils,
  21. GLS.SceneViewer,
  22. GLS.Scene,
  23. GLS.HUDObjects,
  24. GLS.ParticleFX,
  25. GLS.VectorFileObjects,
  26. GLS.Objects,
  27. GLS.BitmapFont,
  28. GLS.Cadencer,
  29. GLS.Texture,
  30. GLS.Navigator,
  31. GLS.GeomObjects,
  32. GLS.SpaceText,
  33. GLS.Behaviours,
  34. GLS.PerlinPFX,
  35. GLS.Blur;
  36. const
  37. cRunBoost = 10;
  38. cWalkStep = 20;
  39. cStrafeStep = 20;
  40. type
  41. TFormPFXGallery = class(TForm)
  42. GLSceneViewer1: TGLSceneViewer;
  43. GLCadencer1: TGLCadencer;
  44. PFXRail: TGLPerlinPFXManager;
  45. PFXBurning: TGLPerlinPFXManager;
  46. PFXSmoke: TGLPerlinPFXManager;
  47. BitmapFont1: TGLBitmapFont;
  48. GLScene1: TGLScene;
  49. WorldRoot: TGLDummyCube;
  50. PfxRenderer: TGLParticleFXRenderer;
  51. GLCamera1: TGLCamera;
  52. PFXBlueArea: TGLPerlinPFXManager;
  53. Timer1: TTimer;
  54. PFXElectro: TGLPerlinPFXManager;
  55. GLNavigator1: TGLNavigator;
  56. GLUserInterface1: TGLUserInterface;
  57. ICE: TGLSpaceText;
  58. GLPlane1: TGLPlane;
  59. PFXRedArea: TGLPerlinPFXManager;
  60. MAGMA: TGLSpaceText;
  61. SMOKE: TGLSpaceText;
  62. RAIL: TGLSpaceText;
  63. FIRE: TGLSpaceText;
  64. ELECTRIC: TGLSpaceText;
  65. FOG: TGLSpaceText;
  66. PFXFog: TGLPerlinPFXManager;
  67. PFXWaterfall: TGLPerlinPFXManager;
  68. WATER: TGLSpaceText;
  69. Panel1: TPanel;
  70. chkMouseLook: TCheckBox;
  71. GLLightSource1: TGLLightSource;
  72. chkFloor: TCheckBox;
  73. GLBlur1: TGLBlur;
  74. chkBlur: TCheckBox;
  75. Label1: TLabel;
  76. procedure GLCadencer1Progress(Sender: TObject;
  77. const deltaTime, newTime: Double);
  78. procedure Timer1Timer(Sender: TObject);
  79. procedure chkMouseLookClick(Sender: TObject);
  80. procedure chkFloorClick(Sender: TObject);
  81. procedure chkBlurClick(Sender: TObject);
  82. procedure FormCreate(Sender: TObject);
  83. private
  84. procedure HandleKeys(const deltaTime: Double);
  85. public
  86. end;
  87. var
  88. FormPFXGallery: TFormPFXGallery;
  89. implementation
  90. {$R *.dfm}
  91. procedure TFormPFXGallery.FormCreate(Sender: TObject);
  92. begin
  93. chkFloorClick(Sender);
  94. end;
  95. procedure TFormPFXGallery.GLCadencer1Progress(Sender: TObject;
  96. const deltaTime, newTime: Double);
  97. begin
  98. HandleKeys(deltaTime);
  99. GLUserInterface1.Mouselook();
  100. GLSceneViewer1.Invalidate();
  101. GLUserInterface1.MouseUpdate();
  102. GLSceneViewer1.Invalidate();
  103. end;
  104. procedure TFormPFXGallery.HandleKeys(const deltaTime: Double);
  105. var
  106. boost: Single;
  107. begin
  108. if IsKeyDown(VK_ESCAPE) then
  109. begin
  110. chkMouseLook.Checked := false;
  111. chkMouseLookClick(self);
  112. end;
  113. if IsKeyDown(VK_SHIFT) then
  114. boost := cRunBoost * deltaTime
  115. else if IsKeyDown(VK_CONTROL) then
  116. boost := cRunBoost * 0.01 * deltaTime
  117. else
  118. boost := deltaTime;
  119. if IsKeyDown('W') then
  120. GLCamera1.Move(cWalkStep * boost);
  121. if IsKeyDown('S') then
  122. GLCamera1.Move(-cWalkStep * boost);
  123. if IsKeyDown('A') then
  124. GLCamera1.Slide(-cStrafeStep * boost);
  125. if IsKeyDown('D') then
  126. GLCamera1.Slide(cStrafeStep * boost)
  127. end;
  128. procedure TFormPFXGallery.Timer1Timer(Sender: TObject);
  129. begin
  130. Caption := 'PFXGallery ' + Inttostr(Round(GLSceneViewer1.FramesPerSecond)
  131. ) + ' FPS';
  132. GLSceneViewer1.ResetPerformanceMonitor;
  133. end;
  134. procedure TFormPFXGallery.chkMouseLookClick(Sender: TObject);
  135. begin
  136. GLUserInterface1.MouseLookActive := chkMouseLook.Checked;
  137. end;
  138. procedure TFormPFXGallery.chkFloorClick(Sender: TObject);
  139. begin
  140. GLPlane1.Visible := chkFloor.Checked;
  141. end;
  142. procedure TFormPFXGallery.chkBlurClick(Sender: TObject);
  143. begin
  144. GLBlur1.Visible := chkBlur.Checked;
  145. end;
  146. end.