123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294 |
- unit MainFormUnit;
- interface
- uses
- Winapi.OpenGL,
- System.SysUtils,
- System.Classes,
- Vcl.Graphics,
- Vcl.Controls,
- Vcl.Forms,
- Vcl.Dialogs,
- Vcl.Menus,
- Vcl.StdCtrls,
- Vcl.ExtDlgs,
-
- GLS.Gui, GLS.Scene, GLS.SceneViewer,
- GLS.Objects, GLS.HUDObjects, GLS.Windows, GLS.BitmapFont, GLS.WindowsFont,
- GLS.Texture, FGuiSkinEditor, GLS.Material, GLS.Coordinates,
- GLS.BaseClasses;
- type
- TForm1 = class(TForm)
- MainMenu1: TMainMenu;
- File1: TMenuItem;
- Open1: TMenuItem;
- Save1: TMenuItem;
- Close1: TMenuItem;
- N1: TMenuItem;
- Import1: TMenuItem;
- N2: TMenuItem;
- Exit1: TMenuItem;
- OpenDialog: TOpenDialog;
- SaveDialog: TSaveDialog;
- GLGuiLayout1: TGLGuiLayout;
- ImportDialog: TOpenDialog;
- Edit1: TMenuItem;
- EditLayout1: TMenuItem;
- ListBox: TListBox;
- ListPopup: TPopupMenu;
- Add1: TMenuItem;
- Remove1: TMenuItem;
- Edit2: TMenuItem;
- N3: TMenuItem;
- GLScene1: TGLScene;
- GLSceneViewer1: TGLSceneViewer;
- GLCamera1: TGLCamera;
- GLPanel1: TGLPanel;
- WindowsBitmapFont1: TGLWindowsBitmapFont;
- Image1: TMenuItem;
- Load1: TMenuItem;
- OpenPictureDialog: TOpenPictureDialog;
- GLMaterialLibrary1: TGLMaterialLibrary;
- HUDSprite1: TGLHUDSprite;
- Edit3: TEdit;
- Label1: TLabel;
- Button1: TButton;
- Button2: TButton;
- procedure Open1Click(Sender: TObject);
- procedure Save1Click(Sender: TObject);
- procedure Close1Click(Sender: TObject);
- procedure Import1Click(Sender: TObject);
- procedure EditLayout1Click(Sender: TObject);
- procedure Add1Click(Sender: TObject);
- procedure Remove1Click(Sender: TObject);
- procedure Edit2Click(Sender: TObject);
- procedure ListBoxClick(Sender: TObject);
- procedure Load1Click(Sender: TObject);
- procedure Edit3Change(Sender: TObject);
- procedure Exit1Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure Button1Click(Sender: TObject);
- procedure Edit3KeyPress(Sender: TObject; var Key: Char);
- procedure Button2Click(Sender: TObject);
- private
- public
- Procedure UpdateLayoutList;
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- procedure TForm1.FormCreate(Sender: TObject);
- var
- MediaPath : String;
- I : Integer;
- begin
- MediaPath := ExtractFilePath(ParamStr(0));
- I := Pos(UpperCase('Demos'), UpperCase(MediaPath));
- if (I <> 0) then
- begin
- Delete(MediaPath, I+6, Length(MediaPath)-I-2);
- SetCurrentDir(MediaPath+'Media\');
- end;
- GLMaterialLibrary1.Materials[0].Material.Texture.Image.
- LoadFromFile('DefaultSkin.bmp');
- end;
- procedure TForm1.Open1Click(Sender: TObject);
- begin
- If OpenDialog.Execute then
- Begin
- GLScene1.BeginUpdate;
- try
- GLGuiLayout1.Clear;
- GLGuiLayout1.LoadFromFile(OpenDialog.FileName);
- UpdateLayoutList;
- finally
- GLScene1.EndUpdate;
- end;
- End;
- end;
- procedure TForm1.Save1Click(Sender: TObject);
- begin
- if SaveDialog.Execute then
- Begin
- GLGuiLayout1.SaveToFile(SaveDialog.FileName);
- End;
- end;
- procedure TForm1.Close1Click(Sender: TObject);
- begin
- GLScene1.BeginUpdate;
- try
- GLGuiLayout1.Clear;
- UpdateLayoutList;
- finally
- GLScene1.EndUpdate;
- end;
- End;
- procedure TForm1.Import1Click(Sender: TObject);
- Var
- XC : Integer;
- begin
- if ImportDialog.Execute then
- Begin
- GLScene1.BeginUpdate;
- try
- For XC := 0 to ImportDialog.Files.Count-1 do
- Begin
- try
- GLGuiLayout1.LoadFromFile(ImportDialog.Files[XC]);
- except
- end;
- End;
- UpdateLayoutList;
- finally
- GLScene1.EndUpdate;
- end;
- End;
- end;
- procedure TForm1.EditLayout1Click(Sender: TObject);
- begin
- Hide;
- GLScene1.BeginUpdate;
- try
- If ListBox.ItemIndex >= 0 then
- GUIComponentDialog((ListBox.Items.Objects[ListBox.ItemIndex] as TGLGuiComponent).Elements)
- finally
- GLScene1.EndUpdate;
- Show;
- end;
- end;
- Procedure TForm1.UpdateLayoutList;
- var
- i : Integer;
- begin
- ListBox.Clear;
- With GLGuiLayout1.GuiComponents do for i:=0 to Count-1 do
- ListBox.Items.AddObject(Items[i].Name, Items[i]);
- ListBox.Selected[GLGuiLayout1.GuiComponents.Count-1] := True;
- End;
- procedure TForm1.Add1Click(Sender: TObject);
- Var
- GuiComp : TGLGuiComponent;
- begin
- GuiComp := GLGuiLayout1.GuiComponents.Add as TGLGuiComponent;
- If ListBox.ItemIndex >= 0 then
- begin
- GuiComp.Name := 'Newly Added';
- end else GuiComp.Name := Edit3.Text;
- UpdateLayoutList;
- end;
- procedure TForm1.Remove1Click(Sender: TObject);
- Var
- S : String;
- begin
- If ListBox.ItemIndex >= 0 then
- Begin
- GLScene1.BeginUpdate;
- try
- GLGuiLayout1.GUIComponents.Delete(ListBox.ItemIndex);
- ListBox.Items.Delete(ListBox.ItemIndex);
- S := GLPanel1.GuiLayoutName;
- GLPanel1.GuiLayoutName := '';
- GLPanel1.GuiLayoutName := S;
- finally
- GLScene1.EndUpdate;
- end;
- End;
- end;
- procedure TForm1.Edit2Click(Sender: TObject);
- begin
- If ListBox.ItemIndex >= 0 then
- GUIComponentDialog((ListBox.Items.Objects[ListBox.ItemIndex] as TGLGuiComponent).Elements)
- end;
- procedure TForm1.ListBoxClick(Sender: TObject);
- begin
- GLScene1.BeginUpdate;
- try
- If ListBox.ItemIndex >= 0 then
- Begin
- GLPanel1.GuiLayoutName := GLGuiLayout1.GuiComponents.Items[ListBox.ItemIndex].Name;
- Edit3.text := GLPanel1.GuiLayoutName;
- End else
- Begin
- GLPanel1.GuiLayoutName := '';
- Edit3.text := 'Newly Added';
- End;
- GLPanel1.DoChanges;
- finally
- GLScene1.EndUpdate;
- end;
- end;
- procedure TForm1.Load1Click(Sender: TObject);
- Var
- Mat : TGLLibMaterial;
- MatName : String;
- begin
- If OpenPictureDialog.Execute then
- Begin
- GLScene1.BeginUpdate;
- try
- MatName := ExtractFileName(OpenPictureDialog.FileName);
- Mat := GLMaterialLibrary1.Materials.GetLibMaterialByName(MatName);
- If not Assigned(Mat) then
- Begin
- GLMaterialLibrary1.AddTextureMaterial(MatName,OpenPictureDialog.FileName).Material.Texture.TextureMode := tmReplace;
- End;
- GLGuiLayout1.Material.LibMaterialName := MatName;
- HUDSprite1.Material.LibMaterialName := MatName;
- finally
- GLScene1.EndUpdate;
- end;
- End;
- end;
- procedure TForm1.Edit3Change(Sender: TObject);
- begin
- If (ListBox.ItemIndex >= 0) then
- Begin
- ListBox.Items[ListBox.ItemIndex] := Edit3.Text;
- GLGuiLayout1.GuiComponents.Items[ListBox.ItemIndex].Name := Edit3.Text;
- End;
- end;
- procedure TForm1.Exit1Click(Sender: TObject);
- begin
- Application.Terminate;
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- Add1Click(Sender);
- end;
- procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
- begin
- If Key = #13 then Add1Click(Sender);
- end;
- procedure TForm1.Button2Click(Sender: TObject);
- begin
- Edit2Click(Sender);
- end;
- end.
|