Code Search for Developers
 
 
  

Unit1.pas from Sector-37 at Krugle


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

Sector-37

Sector-37 (real time 3D cosmic strategy)

Project homepage: http://sourceforge.net/projects/sector37
Programming language(s): Pascal
License: lgpl21

  LoadFromFile.dsc
  SaveToFile.dsc
  StrangeCameraUtilitiesUnitHUDDemo.dpr
  StrangeCameraUtilitiesUnitHUDDemo.res
  Unit1.dfm
  Unit1.pas
  _Cleanup.bat