program Mundo;
{%DelphiDotNetAssemblyCompiler 'C:\Arquivos de programas\Irrlicht-1.3.1\bin\Win32-VisualStudio\Irrlicht.NET.dll'}
uses Borland.Vcl.SysUtils, Irrlicht, Irrlicht.Video, Irrlicht.Core, Irrlicht.Scene;
type
TIJogo= class
protected
procedure CarregarMundo; overload; virtual;
procedure Configurar; overload; virtual;
public
procedure Rodar; overload; virtual;
protected
Mundo : Irrlicht.Scene.IAnimatedMesh;
Dispositivo_ID : IrrlichtDevice;
Dispositivo_ISM: ISceneManager;
Nodulo : ISceneNode;
Dispositivo_IVD: IVideoDriver;
end;
procedure TIJogo.CarregarMundo;
begin
Dispositivo_ID.FileSystem.AddZipFileArchive ('map-20kdm2.pk3');
Mundo := Dispositivo_ISM.GetMesh ('20kdm2.bsp');
Nodulo:= nil;
if Mundo <> nil then begin
Nodulo:= Dispositivo_ISM.AddOctTreeSceneNode (Mundo.GetMesh (0), nil, 0);
if Nodulo <> nil then
Nodulo.Position:= Vector3D.Create (-1300, -144, -1249);
end;
end;
procedure TIJogo.Configurar;
begin
SetCurrentDir ('C:\Arquivos de programas\Irrlicht-1.3.1\media');
Dispositivo_ID := IrrlichtDevice.Create (DriverType.Direct3D9);
Dispositivo_ID.ResizeAble := True;
Dispositivo_ID.WindowCaption := 'Mundo [ '+ Dispositivo_ID.VideoDriver.Name + ' ]';
Dispositivo_IVD := Dispositivo_ID.VideoDriver;
Dispositivo_ISM := Dispositivo_ID.SceneManager;
Dispositivo_ID.CursorControl.Visible:= False;
Dispositivo_ISM.AddCameraSceneNodeFPS;
end;
procedure TIJogo.Rodar;
begin
while Dispositivo_ID.Run and Dispositivo_ID.WindowActive do begin
Dispositivo_IVD.BeginScene (True, True, Color.Create (0, 200, 200, 200));
Dispositivo_ISM.DrawAll;
Dispositivo_IVD.EndScene;
end;
end;
var
IJogo: TIJogo;
begin
IJogo:= TIJogo.Create;
try
with IJogo do begin
Configurar;
CarregarMundo;
Rodar;
end;
finally
IJogo.Free;
end;
end.
|