unit fFireD; interface uses Winapi.OpenGL, System.SysUtils, System.Classes, System.Types, System.Math, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, GLS.Scene, GLS.Objects, GLS.FireFX, GLS.Cadencer, GLS.Behaviours, Stage.VectorGeometry, GLS.SceneViewer, GLS.GeomObjects, GLS.Coordinates, GLS.BaseClasses; type TFormFire = class(TForm) GLScene1: TGLScene; GLSceneViewer1: TGLSceneViewer; GLCadencer1: TGLCadencer; GLFireFXManager1: TGLFireFXManager; GLCamera1: TGLCamera; Sphere1: TGLSphere; Torus1: TGLTorus; GLLightSource2: TGLLightSource; Timer1: TTimer; procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Timer1Timer(Sender: TObject); procedure FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); public mx, my : Integer; end; var FormFire: TFormFire; implementation {$R *.DFM} procedure TFormFire.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin mx:=x; my:=y; end; procedure TFormFire.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if Shift<>[] then GLCamera1.MoveAroundTarget(my-y, mx-x); mx:=x; my:=y; GLCadencer1.Progress; end; procedure TFormFire.Timer1Timer(Sender: TObject); begin Caption:='GLScene Fire - '+Format('%.1f FPS', [GLSceneViewer1.FramesPerSecond]); GLSceneViewer1.ResetPerformanceMonitor; end; procedure TFormFire.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin GLCamera1.AdjustDistanceToTarget(Power(1.1, WheelDelta/120)); end; end.