Show Unit1.pas syntax highlighted
unit Unit1;
interface
{$I GLScene.inc}
uses
// VCL
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,
// GLScene
GLBehaviours, GLCadencer, GLScene, GLObjects, GLMisc,
GLWin32Viewer, GLHUDObjects, AsyncTimer, GLGeomObjects, GLGraph,
VectorGeometry, GLSmoothNavigator,
// Strange
StrangeCameraUtilities, StrangeUnitHUD, StrangeTypesAndConstants
{$IFDEF STRANGE_INIFILE_SUPPORT},StrangeIniObjects{$ENDIF};
type
TForm1 = class(TForm)
GLSceneViewer1: TGLSceneViewer;
GLScene1: TGLScene;
FlyingUnit: TGLDummyCube;
GLCadencer1: TGLCadencer;
GLLightSource1: TGLLightSource;
AsyncTimer1: TAsyncTimer;
GLPlane1: TGLPlane;
GLArrowLine1: TGLArrowLine;
GLXYZGrid1: TGLXYZGrid;
GLDummyCube3: TGLDummyCube;
GLArrowLine2: TGLArrowLine;
Button1: TButton;
Button2: TButton;
GroupBox1: TGroupBox;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
RadioButton5: TRadioButton;
GroupBox2: TGroupBox;
RadioButton6: TRadioButton;
RadioButton7: TRadioButton;
RadioButton8: TRadioButton;
Button3: TButton;
Button4: TButton;
World: TGLDummyCube;
StaticUnit: TGLDummyCube;
GLCamera1: TGLCamera;
procedure AsyncTimer1Timer(Sender: TObject);
procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: integer);
procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: integer);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: double);
procedure Button2Click(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure RadioButton5Click(Sender: TObject);
procedure FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure RadioButton6Click(Sender: TObject);
procedure RadioButton7Click(Sender: TObject);
procedure RadioButton8Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Navigator: TGLSmoothNavigator;
xx, yy: integer;
NewXX, NewYY: integer;
ShiftState: TShiftState;
myObj1: TStrangeParentInvariantObject;
myObj2: TStrangeCameraInvariantObject;
myObj3: TStrangeCameraMoreInvariantObject;
myObj4: TStrangeCameraMostInvariantObject;
myObj5: TStrangeCameraSuperInvariantObject;
HUD: TStrangeCustomUnitHUD;
SimpleHUD: TStrangeUnitHUD;
implementation
{$R *.dfm}
procedure TForm1.AsyncTimer1Timer(Sender: TObject);
begin
Caption := 'StrangeCameraUtilities + StrangerUnitHUD Demo by Da Stranger - ' + GLSceneViewer1.FramesPerSecondText;
Navigator.AutoScaleParameters(GLSceneViewer1.FramesPerSecond);
GLSceneViewer1.ResetPerformanceMonitor;
end;
procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: integer);
begin
ShiftState := Shift;
NewXX := X;
NewYY := Y;
end;
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: integer);
begin
xx := x;
yy := y;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if GLCamera1.TargetObject = FlyingUnit then
begin
GLCamera1.TargetObject := GLDummyCube3;
Navigator.MoveAroundParams.TargetObject := GLDummyCube3;
end
else
begin
GLCamera1.TargetObject := FlyingUnit;
Navigator.MoveAroundParams.TargetObject := FlyingUnit;
end
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//Create the Navigator
Navigator := TGLSmoothNavigator.Create(Self);
Navigator.MovingObject := GLCamera1;
with Navigator.MoveAroundParams do
begin
Inertia := 100;
MaxAngle := 1;
PitchSpeed := 500;
TurnSpeed := 500;
end;
myObj1 := TStrangeParentInvariantObject.CreateAsChild(FlyingUnit);
myObj2 := TStrangeCameraInvariantObject.CreateAsChild(FlyingUnit);
myObj3 := TStrangeCameraMoreInvariantObject.CreateAsChild(FlyingUnit);
myObj4 := TStrangeCameraMostInvariantObject.CreateAsChild(FlyingUnit);
myObj5 := TStrangeCameraSuperInvariantObject.CreateAsChild(FlyingUnit);
//Flexible HUD
HUD := TStrangeCustomUnitHUD.Create(myObj1);
with HUD do
begin
ObjectHeight := 2;
HUDWidth := 1.8;
HUDHeight := 0.15;
AddLifeHUD;
SetCurrentHealthLevel(0.3);
AddArmorHUD;
SetCurrentArmorLevel(0.9);
end;
//SimpleHUD
SimpleHUD := TStrangeUnitHUD.CreateAsChild(StaticUnit);
with SimpleHUD.UnitHUDSettings do
begin
ObjectHeight := 2;
HUDWidth := 2.8;
HUDHeight := 0.15;
AddLifeHUD;
SetCurrentHealthLevel(0.6);
AddArmorHUD;
SetCurrentArmorLevel(0.2);
end;
end;
procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: double);
begin
FlyingUnit.Move(2 * deltatime);
if (ssRight in ShiftState) or (ssLeft in ShiftState) then
Navigator.MoveAroundTarget(yy - NewYY, xx - NewXX, Deltatime)
else
Navigator.MoveAroundTarget(0, 0, Deltatime);
xx := NewXX;
yy := NewYY;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
FlyingUnit.AbsolutePosition := NullHmgVector;
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
HUD.MoveTo(myObj1);
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
begin
HUD.MoveTo(myObj2);
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
begin
HUD.MoveTo(myObj3);
end;
procedure TForm1.RadioButton4Click(Sender: TObject);
begin
HUD.MoveTo(myObj4);
end;
procedure TForm1.RadioButton5Click(Sender: TObject);
begin
HUD.MoveTo(myObj5);
end;
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
GLCamera1.AdjustDistanceToTarget(1 + (WheelDelta / abs(WheelDelta))* 0.1);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
GLCadencer1.Enabled := False;
AsyncTimer1.Enabled := False;
HUD.Free;
SimpleHUD.Free;
myObj1.Free;
myObj2.Free;
myObj3.Free;
myObj4.Free;
myObj5.Free;
GLSceneViewer1.Camera := nil;
GLCamera1.TargetObject := nil;
GLCamera1.Destroy;
end;
procedure TForm1.RadioButton6Click(Sender: TObject);
begin
GLCadencer1.FixedDeltaTime := 0;
end;
procedure TForm1.RadioButton7Click(Sender: TObject);
begin
GLCadencer1.FixedDeltaTime := 0.01;
end;
procedure TForm1.RadioButton8Click(Sender: TObject);
begin
GLCadencer1.FixedDeltaTime := 0.1;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
{$IFDEF STRANGE_INIFILE_SUPPORT}
HUD.SaveToIniFile('SaveToFile.dsc');
{$ELSE}
Assert(False, SIF_ERROR);
{$ENDIF}
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
{$IFDEF STRANGE_INIFILE_SUPPORT}
HUD.LoadFromIniFile('LoadFromFile.dsc');
{$ELSE}
Assert(False, SIF_ERROR);
{$ENDIF}
end;
end.
See more files for this project here