Delphi-PRAXiS
Seite 3 von 26     123 4513     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Andorra 2D [Ver. 0.4.5.1, 31.12.08] (https://www.delphipraxis.net/81314-andorra-2d-%5Bver-0-4-5-1-31-12-08%5D.html)

igel457 26. Feb 2007 12:39

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Unter Widnows kompiliert es. Die Unit "windows" wird momentan nur für zwei Dinge benötigt: Das loadlibrary und gettickcount. Ich muss da mal nach den Linux equivalenten suchen. Außerdem läuft es momentan unter Linux eh nicht, da es momentan nur die DirectX Dll gibt.
Nivosta, der das OpenGL Plugin schreiben wollte, hat sich nun seit vier Wochen nicht mehr gemeldet und ich vermute, dass er nicht mehr daran weiter schreibt. Wenn jemand Interesse hat - einfach melden. Ist auch kein so großes Ding. Mein DirectX Plugin hat um die 700 Zeilen.

Danke fürs Testen,
igel457

mimi 26. Feb 2007 15:12

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Bitte !
Schade das sie noch nicht Platform unabhänig ist :(

rawsoul 11. Mär 2007 11:30

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Ich würde Andorra auch sehr gerne mal antesten - leider komme ich nicht auf Sourceforge, der Server scheint überlastet zu sein =(

igel457 11. Mär 2007 11:37

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Bei Sourceforge musst du es meisten zweimal probieren :-)
Bei mir kann ich keine Probleme feststellen.

Ich implementiere gerade eine Art Canvas, mit dem man Linien, Rechtecke, Kreise, etc. zeichnen kann.

Igel457

rawsoul 11. Mär 2007 11:49

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Sorry, ich hatte mich falsch ausgedrückt. Auf SorceForge komme ich problemlos, bloß scheint der DownloadServer nicht das zu machen, was er sollte ;)
Sprich: Ich komme auf SourceForge, kann aber nichts runterladen.

xZise 11. Mär 2007 13:13

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Wähl ein anderen DL-Server aus ;)

Gravitar 11. Mär 2007 20:24

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hi Igel,

wahnsinn diese Engine (trotz 0.15)! Ich habe gleich mal mit Rotation und Transparenz rumgespielt (sh. Anhang). Die Engine hat offenbar gar kein Problem, Rotationen in Echtzeit auszuführen (im Gegensatz zu BlitzBasic z.B.).

Leider ist es mir nicht gelungen, das Beispiel zu Newton zu compilieren, da die ADNetwon-Unit nicht compiliiert (.dcu) im Package lag. Mir selbst ist es nicht gelungen, diese zu compilieren (warum auch immer). Das Gleiche gilt für die PNG-Unterstützung.

Könntest Du die .dcu's mit in das Package aufnehmen?

Ich bin schon ganz gespannt auf die nächsten Tutorials (z.B. Sprite-Engine....).

Großes Lob

Andreas

P.S.: Bist Du wirklich erst 15 Jahre alt?

Edit: Jetzt auch mit lauffähiger Exe (inkl. notwendiger DLLs und BMPs) und der reine Source (ohne Dlls)

inherited 12. Mär 2007 14:48

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Das mit den DCU's ist keine so gute Idee, weil die von Delphi-Version zu Delphi-Version unterschiedlich aussehen. Was hat er denn beim Kompilieren zu meckern?

Meine Physik-Engine funktioniert übrigens super mit der Engine zusammen :)

igel457 12. Mär 2007 15:12

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Hallo,

erstmal danke fürs Testen,


Zitat:

Zitat von Gravitar
Hi Igel,

wahnsinn diese Engine (trotz 0.15)! Ich habe gleich mal mit Rotation und Transparenz rumgespielt (sh. Anhang). Die Engine hat offenbar gar kein Problem, Rotationen in Echtzeit auszuführen (im Gegensatz zu BlitzBasic z.B.).

Da ich Hardwareacceleration verwende, können die Rotationen natürlich sehr schnell ausgeführt werden. Man benötigt halt eine 3D-Karte. Irgendwie läuft deine Echse bei mir nicht (fehlen vielleicht die Bilder?). Vielleicht solltest du deine Version der DLLs dazupacken, oder einfach den Sourcecode hochladen.

Zitat:

Zitat von Gravitar
Leider ist es mir nicht gelungen, das Beispiel zu Newton zu compilieren, da die ADNetwon-Unit nicht compiliiert (.dcu) im Package lag. Mir selbst ist es nicht gelungen, diese zu compilieren (warum auch immer). Das Gleiche gilt für die PNG-Unterstützung.

Hast du auch alle Prerequisiten installiert? Diese befinden sich in diesem Package: http://downloads.sourceforge.net/and...se_mirror=osdn

Zitat:

Zitat von Gravitar
Könntest Du die .dcu's mit in das Package aufnehmen?

Nein. Die Begründung hat inherited schon geschrieben.

Zitat:

Zitat von Gravitar
Ich bin schon ganz gespannt auf die nächsten Tutorials (z.B. Sprite-Engine....).

Wenn ich mal wieder Zeit habe. Da ich letzte Woche Oblivion entdeckt habe, ich die Website meiner Schule umbaue und dann auch noch für selbige (ein wenig) lernen muss, ist diese leider (noch) weniger geworden.
Zitat:

Zitat von Gravitar
P.S.: Bist Du wirklich erst 15 Jahre alt?

Nein, am Donnerstag werde ich 16 :mrgreen: .

Viel Spaß mit meiner Engine, ich freue mich über jede Rückmeldung,
Igel457

Gravitar 12. Mär 2007 21:51

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Hi Igel,

Zitat:

Zitat von igel457
Hast du auch alle Prerequisiten installiert? Diese befinden sich in diesem Package: http://downloads.sourceforge.net/and...se_mirror=osdn

Ja, ich habe das komplette Paket runtergeladen. Aber was Prerequisiten sind, geschweige denn wie man diese installiert befindet sich derzeit außerhalb meines aktuellen Erfahrungsschatzes. :( Ich lerne aber gern dazu. :)

Zitat:

Zitat von igel457
Irgendwie läuft deine Echse bei mir nicht (fehlen vielleicht die Bilder?). Vielleicht solltest du deine Version der DLLs dazupacken, oder einfach den Sourcecode hochladen.

Erledigt, steht in meinem Beitrag bereit (DLLs und BMPs vergessen).

Gruß, Andreas

igel457 13. Mär 2007 14:27

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Zitat:

Ja, ich habe das komplette Paket runtergeladen. Aber was Prerequisiten sind, geschweige denn wie man diese installiert befindet sich derzeit außerhalb meines aktuellen Erfahrungsschatzes. :Sad: Ich lerne aber gern dazu. :Smile:
Ok... Du findest in dem Kompletten Paket eine Datei namens "prereq.zip". Als nächstes Kopierst du die enthaltenen Ordner aus den Zip-Datein in der Zip-Datei in deinen "Lib" Ordner (so was wie C:\Programme\Borland\Delphi7\lib\). Dann fügst du diese Ordner in Delphi zum Bibliothekspfad hinzu, was über das Menü --> Tools --> Optionen funktioniert. Hoffe das war verständlich.

Deine Demo läuft jetzt auch bei mir und sieht echt gut aus. Wenn du möchtest füge ich es als Demo hinzu.

Igel457

Gravitar 13. Mär 2007 15:36

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Hi Igel,

danke für die Tipps mit den Prerequisiten. Probiere ich heute abend gleich mal aus.



Zitat:

Zitat von igel457
Deine Demo läuft jetzt auch bei mir und sieht echt gut aus. Wenn du möchtest füge ich es als Demo hinzu.

Oh, gern, wobei man das Ganze sicherlich viel besser programmieren kann.

Gruß, Andreas

Gravitar 14. Mär 2007 21:35

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Hi,

inzwischen habe ich die Newton-Engine eingebunden. Die ersten Sprites fallen auch schon zu Boden!

Jetzt aber 2 Fragen:

1. Wie bekomme ich jetzt die Gravitation ausgeschaltet (nicht Mass := 0, da ansonsten bei einer Kollision kaum Wirkung erzielt wird)

2. Wie gebe ich den Sprites eine Geschwindigkeit mit (habe schon irgendwas mit ntVector3f oder AdVector2 ausprobiert, funzt aber nicht)

Hier der dazugehörige Code:

Delphi-Quellcode:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,AdDraws, AdClasses, AdSprites,AdPhysics, AdPng;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    AdDraw1:TAdDraw;                                   {Fläche auf der gemalt wird}
    AdPerCounter:TPerformanceCounter;                  {Misst die Zeit von Frame zu Frame}
    AdSpriteEngine: TSpriteEngine;
    AdImageList1:TPictureCollection;                   {Verwaltet die Zeichenobjekte}
    Slected:TSprite;
    dx,dy : integer;
    procedure Idle(Sender:TObject;var Done:boolean);   {Wird aufgerufen, wenn Form nichts zu tun hat}
    procedure UpdatePosition;                          {Verändert die Positionen der Zeichenobjekte inkl. Rotation}
    { Public-Deklarationen }
  end;

const
  AnzObj = 5;                                         {Wieviele Objekte sollen gezeichnet werden}

var
  Form1: TForm1;
  obj : array[1..AnzObj,1..6] of single;               {Verwaltet x,y-Koordinate, Richtung + Geschwindigkeit, Rotationswinkel}
  objw,objh : Integer;                                 {speichert die Höhe und Breite des geladenen Bitmaps}

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
begin
  randomize;                                           {Zufallgenerator neu mischen}
  AdDraw1 := TAdDraw.Create(self);                     {Zeichenobjekt wird erzeugt}
  AdDraw1.DllName := 'AndorraDX93D.dll';               {Verbindung zu DirectX.dll wird hergestellt}
  AdPerCounter := TPerformanceCounter.Create;          {Zeitmesser wird erzeugt}
  if AdDraw1.Initialize then                           {wenn das Initialisieren von ADraw1 geklappt hat}
  begin
    Application.OnIdle := Idle;                         {Wenn Form1 nicht zu tun hat, Idle aufrufen}
    AdImageList1 := TPictureCollection.Create(AdDraw1); {Imagelist erzeugen}
    AdSpriteEngine := TSpriteEngine.Create(Nil);
    AdSpriteEngine.Surface := AdDraw1;

    AdImageList1.Add('Fels').Texture.LoadGraphicFromFile('Stern.png',true,clWhite); {aus Stern.bmp laden, Maske=true, Maskenfarbe = clWhite}
    AdImageList1.Restore;                                {Irgenwas internes}
    objw := AdImageList1.find('Fels').Width;             {Breite und Höhe in globalen Variablen speichern}
    objh := AdImageList1.find('Fels').Height;

    with TPhysicalApplication.Create(AdSpriteEngine) do
    begin
      SolverModel := smLinear;
    end;

    for i:= 1 to AnzObj do                             {erzeugen wir je Zeichenobjekt zufällige Position, Richtungs und Winkelinformationen}
    begin
      obj[i,1] := random(form1.Clientwidth);
      obj[i,2] := random(form1.ClientHeight);
      obj[i,3] := random(200)-random(200);
      obj[i,4] := random(200)-random(200);
      obj[i,5] := random(360);
      obj[i,6] := random(20)-random(20);
      With TPhysicalCylinderSprite.Create(AdSpriteEngine) do
      begin
        x := obj[i,1];
        y := obj[i,2];
        Image := AdImageList1.Find('Fels');
        Mass := 10;
        Angle := obj[i,5];
        NtVector3f(200,200,0);
        InitializeShape;
      end;
    end;
  end
  else
  begin
    ShowMessage('Error while initializing Andorra 2D. Try to use another display'+
                'mode or another video adapter.');
    halt;
  end;

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  AdDraw1.Free;
  AdSpriteEngine.Free;
  AdPerCounter.Free;
  AdImageList1.Free;
end;

procedure TForm1.Idle(Sender: TObject; var Done: boolean);
begin
  if AdDraw1.CanDraw then
  begin
    AdPerCounter.Calculate;                               {wie lange ist seit dem letzten Aufruf vergangen?}
    Caption := 'FPS:'+inttostr(AdPerCounter.FPS);         {FPS in Titelzeile ausgeben}
    AdDraw1.ClearSurface(clBlack);                        {Zeichfläche mit Schwarz löschen}

    AdDraw1.BeginScene;
    AdSpriteEngine.Move(AdPerCounter.TimeGap / 1000);
    AdSpriteEngine.Draw;
    AdSpriteEngine.Dead;
    AdDraw1.EndScene;

    AdDraw1.Flip;                                          {gezeichnete Scene darstellen}
  end;
  Done := false;
end;

end.
Gruß, Andreas

inherited 15. Mär 2007 13:42

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Wenn ich recht informiert bin, arbeitet der Igel bereits an einer integrierten Newton-Engine,sodass dir viel Arbeit erspart bleibt ;)

igel457 15. Mär 2007 14:41

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Zitat:

Zitat von Gravitar
1. Wie bekomme ich jetzt die Gravitation ausgeschaltet (nicht Mass := 0, da ansonsten bei einer Kollision kaum Wirkung erzielt wird)
2. Wie gebe ich den Sprites eine Geschwindigkeit mit (habe schon irgendwas mit ntVector3f oder AdVector2 ausprobiert, funzt aber nicht)

Hallo,

die Newton Unit ist Momentan in einem sehr frühen Entwicklungsstadium, weshalb du die von dir oben genannten Punkte nicht ohne weiteres durchführen kannst (d.h. ohne meine Unit zu bearbeiten), was später aber ohne Probleme möglich sein wird. Momentan fokusiere ich meine "Kräfte" aber auf den Canvas und dann 3D oder die GUI. (Wobei ich die GUI praktisch schon, wenn auch für DelphiX, geschrieben habe.)

Da sich Nivosta Anfang der Woche (mal wieder) bei mir gemeldet hat, gibt es (hoffentlich) vorraussichtlich bis Ende des Monats auch das OpenGL Plugin und damit die volle Kompatibilität zu Lazarus/Kylix und Linux.
Zitat:

Zitat von inherited
Wenn ich recht informiert bin, arbeitet der Igel bereits an einer integrierten Newton-Engine,sodass dir viel Arbeit erspart bleibt ;)

Was meinst du mit integriert? Ist doch schon integriert :gruebel: ...

Heute komme ich, man sehe auf mein Alter, leider nicht mehr zu so viel... (Ich glaube ich spiele mal noch ein wenig Oblivion)

Danke für die Fragen,
Igel457

igel457 31. Mär 2007 17:34

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Hallo.
Ich habe mich mal dran gesezt und ein Tutorial zur Spriteengine geschrieben - siehe erster Beitrag.

Viel Spaß damit,
Igel457

Florian H 1. Apr 2007 17:40

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Ich habe den Schritt gewagt und mein Spiel DrawBall für Andorra2D umgeschrieben und was soll ich sagen? Es läuft prima, eine hervorragende Performance und prima Unterstützung von div. Grafikeffekten .. wirklich saubere Arbeit :)
Framerate ist, bei grafisch aufwändigen Leveln (viele kleine Einzelgrafiken) ca. 50-100x schneller (500-1000 statt ~10 FpS) ..

*lob & freu*

framik 1. Apr 2007 17:42

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Juhu, danke.
Da kann ich gleich mal prüfen ob ich bis jetzt alles richtig gemacht habe. :lol:

Florian H 1. Apr 2007 17:53

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Bisher siehts prima aus ^^
War ja auch der Grund wieso ich es damals noch nicht genutzt hab (vor 3-4 Monaten) .. da wars halt doch noch ein Stückweit mehr in der Entwicklung^^

Eine Frage noch: gibts irgendeine Möglichkeit, Text auf ner adDraw-Oberfläche auszugeben oder muss man sich das selber mittels Buchstaben-Grafiken zusammenbasteln?

igel457 1. Apr 2007 18:08

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
@Florian H:
Schön, dass ich dich endlich zu Andorra 2D "konvertiert" habe und es dir gefällt.

Es gibt das TAdFont Objekt, mit dem du ganz einfach Text ausgeben kannst. Siehe auch hier: http://www.delphipraxis.net/internal...t=97168#682570

In Version 0.2 gibt es dann auch einen "Canvas", mit dem das noch viel einfacher geht.

Noch viel Spaß,
Igel457

Florian H 1. Apr 2007 20:20

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Edit: könnte auch an mir liegen .. sorry *test*
Edit2: ja, lag an mir :wall: .. ignoriert das Folgende ;)

Edit3: und hier gibts DrawBall mit Andorra-Engine: klick!

Aloha,

das mit der Schrift funktioniert inzwischen wunderbar, danke.

Aber weil ich ja nie aufhören kann zu nerven, hab ich gleich noch eine Frage, diesmal bezüglich PNGs mit Alphachannel: irgendwie werden bei mir PNGs stets mit viel zu wenig Transparenz angezeigt .. wenn ich also in einem Grafikprogramm meiner Wahl (getestet mit Paint Shop Pro und Photoshop) eine PNG-Datei mit Alphachannel erzeuge, wird dieser zwar übernommen, das Bild wird aber bei weitem nicht so transparent dargestellt, wie es soll.

Hier ein Beispiel anhand folgender PNG-Datei:
http://klammcam.loseoase.de/host/upl...e3f__kugel.png

Das sieht im Spiel wie folgt aus (rechts als Vergleich so, wie es sein soll (reinkopiert)):
http://klammcam.loseoase.de/host/upl...eb4__alpha.jpg

Man beachte: grundsätzlich funktioniert es, bei dem schwarzen Balken sieht man rechts ein wenig den Hintergrund durchschimmern...


Grüßle
flo

Joe_the_Junkie 3. Apr 2007 16:13

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Hi,

Erstmal muss ich sagen, dass deine Engine echt super ist. Respekt :thumb:

Was ich noch fragen wollte ist, ob du vlt ein Tutorial schreiben könntest für
die Physik-Engine, die dabei ist :-D

Oder vlt könnte mir so jemand helfen bei der Physikengine von Andorra.

z.B.: Hab ich die Frage, ob die Physik nur "Kugeln" bzw. Kreise und Vierecke berechnen
kann oder noch andere Formen.

Würde mich übe ne Antwort freuen.

MfG Joe the Junkie

igel457 3. Apr 2007 18:36

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Wie ich schon oben geschrieben habe, würde ich die Physikengine in der aktuellen Form nicht verwenden - da ein Nachteil z.B. ist, dass du, wie schon vermutet, nur Kugeln und Kisten berrechnen kannst. Deshalb wird es vorerst auch kein Tutorial geben. Mein Rat: Schau dir die Tutorials zu Newton an und schreibe vorerst selbst daran weiter.

Über die Verwendung der bisherigen Physik-Engine sollte die Demo alles sagen - es kann wirklich nicht mehr.

Ich hoffe, dass ich dich nicht all zu sehr entmutigt habe und noch viel Spaß mit Andorra 2D,
Igel457

g0rmed 3. Apr 2007 22:04

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Erstmal ein riesenlob für diese engine von mir. :hello:

ich habe delphiX zwar nie (nicht mal angeschaut) benutzt aber ich steig mal sofort mit andorra 2d ein.
ich habe mein spiel, was ich als info-projekt gemacht habe mal mit andorra 2d angefangen und muss sagen, dass es super ausschaut und flüssig läuft. ich habe dabei mal ein paar deiner codeschnipsel aus breakout ud physic benutzt...wenn du erlaubst.

Cool währ wirklich, wenn du die physikengine weiterentwickeln würdest :)
ich schau mal die tutorials für newton an und gucke ob ich da selber was rumbasteln tue.

ach ja:

mein spiel: bR1ck n€wt0n gibts hier
meine page: g0RmeD.dE

und hier brick mit andorra 2D : brick andorra ...der link stimmt so, ihr müsst ihn nur kopieren...

igel457 5. Apr 2007 11:48

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Danke für das Lob...

Dein Spiel sieht doch auch ganz nett aus :thumb: .
Die Partikel könntest du vielleicht, wie unten im Partikel-Tutorial beschrieben, mit Alphachannel hereinladen, dann würde es noch besser aussehen.

Die Physikengine werde ich in Version 0.2.5 erweitern. Hier mal ein ausschnitt aus der Roadmap:
Code:
Version 0.2 (Releases: BETA)
  Plugin side:
    - Transform the view matrix to a 3D view [DONE]
    - Draw lines [DONE]
  Application side:
    - Canvas [DONE]
    - GUI [In progress]
   
Version 0.2.5 (Releases: BETA|STABLE)
  Application side:
    - Load 3D objects [50%]
    - TGA etc. texture loader and compressor
    - Expand Newton-Unit

Version 0.3
  Plugin side:  
    - Textures as rendertarget
    - Shader

Neutral General 5. Apr 2007 12:25

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Hi,

Ich musss vorher nochmal sagen: Deine Engine ist feinste, beste Arbeit! :thumb: :thumb:

Aber wollte mal nachfragen wie das aussieht mit der GUI... Wolltest doch da Augaben verteilen. Kommt da noch was oder hat sich das erledigt?

Gruß
Neutral General

igel457 5. Apr 2007 13:03

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Wie ich in dem Thread geschrieben hatte, brauche ich noch ein klein wenig. Die GUI läuft aber so weit. Ich bin gerade dabei Hints einzubauen und dann schreibe ich zum Test so Komponenten wie Panel und Button. Wenn ich damit fertig bin, gebe ich euch Bescheid. Also hat sich das noch lange nicht erldeigt :-).
Außerdem habe ich gerade noch ein bissel was anderes zu tun. Siehe hier...

inherited 5. Apr 2007 13:37

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Ich versuche gerade Animationen zu verwenden. Das Bild ist 80 pixel Breit und 20 Pixel hoch, eine ANimation hat ebenfalls eine Breite von 20.
Das Bild lade ich so:
Delphi-Quellcode:
    with AdImageList.Add('figureLL') do
    begin
      Texture.LoadGraphicFromFile('figureLL.bmp', true, clFuchsia);
      PatternWidth:=20;
    end;
Das Bild male ich so
Delphi-Quellcode:
  AdImageList.Find('figureLL').Draw(AdDraw,4*20, 4*20,Round(pattern));
WObei pattern natürlich immer angepasst wird. Allerdings malt er jetzt das gesamte Bild auf 20x20 Pixel zusammengequetschthin ohne die geringste Animation. Liegt der Fehler bei mir?
€dit: Vergesst es, mein Fehler :wall:

g0rmed 5. Apr 2007 21:41

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
@igel
kannst du bitte den skin-editor mal online stellen (oder nen link geben)? du hast ja schon nen screenshot hochgeladen...

g0rmed

Codewalker 6. Apr 2007 08:36

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Au ja. Eine Art "Preview" der GUI wäre ganz nett. Dann kann man zumindest schon mal damit rumspielen und ein Gefühl für den Aufbau bekommen. Sonst bau ich jetzt alles per VCL auf und brech mir dann nacher einen ab, dass umzuproggen :gruebel:

Außerdem noch eine Idee: Eine Liste der zuletzt geöffneten Dateien wäre im ImageEditor ganz nett. Er zeigt mir immer den Ordner mit den Grafiken, dann muss ich wechseln. Wenn ich dann eine Grafik hinzufügen will, muss ich schon wieder wechseln. Über die MRU-Liste würde auch die FileName-Eigenschaft des OpenDialogs nicht verändert werden.

igel457 6. Apr 2007 11:48

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Zitat:

Zitat von Codewalker
Au ja. Eine Art "Preview" der GUI wäre ganz nett.

Ihr könnt euch ja die neusten Entwicklungsdateien im CVS-Repository herunterladen. Die relevanten Dateien liegen im Verzeichnis "src" und heißen "AdGUI.pas", "AdSkin.pas" und "AdComponents.pas"
Die GUI ist komplett XML basierend.
Die GUI wird ungefähr so verwendet werden können.
Delphi-Quellcode:
AdGUI := TAdGUI.Create(AdDraw1);
AdGUI.Skin.LoadFromFile('sunna.axs');
AdGUI.Cursors.LoadFromFile('mouse.xml');
AdGUI.ConnectEventHandlers(Form1);

AdForm := TAdForm.Create(AdGUI);
AdForm.LoadFromFile('mainmenu.xml');
with AdForm.FindComponent('Panel1') do
begin
  Hint := 'Ein tolles Panel';
  ShowHint := True;
end;
AdForm.OnMouseMove := WasWeisIch;

procedure Render;
begin
  .
  .
  AdGUI.Update;
  .
  .
end;

procedure Destroy;
begin
  AdGUI.Free;
end;
Vielleicht lade ich heute (oder morgen, oder übermorgen) mal eine Testverion hoch ;-).

Danke für die rege Nachfrage,
igel457

Codewalker 6. Apr 2007 12:38

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Ich hätte da noch eine sinnvolle und wichtige Idee für den ImageEditor: Ich bräuchte eine Möglichkeit, mehrere (z.B. alle ausgewählten Bilder) gleichzeitig mit ein und demselben Bild als Alphachannel zu versehen. Das wäre praktisch zum "zuschneiden" von Bildern.

igel457 6. Apr 2007 15:49

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Werde ich einbauen.

igel457 7. Apr 2007 13:33

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, da der Wunsch bestand (und Ostern ist :-)) hier eine kleine Preview meines GUI Systems. Der Sourcecode findet/wird sich finden im CVS Repository. Im GUI Editor kann man noch keine Elemente hinzufügen, dies geht nur über Bearbeiten der Datei "test.xml"

Viel Spaß damit,
Igel457

Codewalker 7. Apr 2007 14:00

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Na das sieht doch schon super aus. Vor allem dass man frei eigene Bilder einbauen kann finde ich gut. Was schätzt du denn, wann gibt es die erste einsatzbereite Version? Ich kann es kaum abwarten, das endlich einzubauen :mrgreen:

igel457 7. Apr 2007 14:03

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Zitat:

Zitat von Codewalker
Was schätzt du denn, wann gibt es die erste einsatzbereite Version?

Hm... Vielleicht irgendwann nächste oder übernächste Woche ;-)

Codewalker 7. Apr 2007 15:05

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Hi Igel457.

Ich hab da ein kleines Problem mit der SpriteEngine. Ich habe irgendwo (weiß nicht ob in diesem oder einem anderen Thread) deine Codezeilen übernommen, um einen Zoom zu programmieren. Das klappt auch soweit ganz gut, aber wenn ich rauszoome, zeichnet die SpriteEngine nur noch ein Viertel des Bildschirms. Wie kann ich der denn die Größenänderung auch beibringen? Hab schon viel probiert, aber es will einfach nicht klappen.

Ansonsten, muss ich es nochmal sagen: Mit der Engine zu basteln macht einfach nur Spaß :mrgreen:

igel457 7. Apr 2007 15:24

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Dazu musst du dir eine Klasse von der Spriteengine ableiten und das Property "SurfaceRect" überschreiben:
Delphi-Quellcode:
type
  TMySpriteEngine = class(TSpriteEngine)
    private
      function GetSurfaceRect:TRect;
    public
      property SurfaceRect read GetSurfaceRect;
  end;

  function TMySpriteEngine.GetSurfaceRect:TRect;
  var r:TRect;
      w,h:integer;
  begin
    r := inherited SurfaceRect;
    w := r.Right - r.Left;
    h := r.Bottom - r.Top;
    result := Rect(r.Left-w * ZoomFaktor, r.Top - h * ZoomFaktor, r.Right + w * ZoomFaktor, r.Bottom + h * ZoomFaktor);
  end;

Codewalker 7. Apr 2007 15:37

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Hmm. Habe ich gemacht, zeigt aber keine Wirkung. Das ganze sieht jetzt so aus:

Delphi-Quellcode:
  TZoomSpriteengine = class(TSpriteEngine)
  private
    FZoom: integer;
    function GetSurfaceRect: TRect;
    procedure SetZoom(const Value: integer);
  public
    property SurfaceRect Read GetSurfaceRect;
    property Zoom: integer Read FZoom Write SetZoom;
  end;

{..............}

function TZoomSpriteengine.GetSurfaceRect: TRect;
var
  r: TRect;
  w, h: integer;
begin
  r := inherited SurfaceRect;
  w := r.Right - r.Left;
  h := r.Bottom - r.Top;
  Result := Rect(r.Left - w * Zoom, r.Top - h * Zoom, r.Right + w *
    Zoom, r.Bottom + h * Zoom);
end;

procedure TZoomSpriteengine.SetZoom(const Value: integer);
begin
  FZoom := Value;
end;
Ich hab noch das Erstellen und die Variablentypen in meinem Programm korrigiert, aber irgendwie gab das keine Änderung. Muss ich da noch eine Funktion aufrufen, um die Einstellungen zu übernehmen? Das Zoomen sieht so aus:

Delphi-Quellcode:
procedure TForm1.ZoomOut(Sender: TObject);
begin
  Settings.Zoom := 2;
  SpriteEngine.Zoom:=Settings.Zoom;
   AdDraw.AdAppl.Setup2DScene(PaintBox1.Width * Settings.Zoom,
    PaintBox1.Height * Settings.Zoom);
end;


procedure TForm1.ZoomIn(Sender: TObject);
begin
  Settings.Zoom := 1;
  SpriteEngine.Zoom:=Settings.Zoom;
  AdDraw.AdAppl.Setup2DScene(PaintBox1.Width * Settings.Zoom,
    PaintBox1.Height * Settings.Zoom);

end;
Settings ist hier nur eine Hilfsklasse, um allerlei Einstellungen zu verwalten.

Codewalker 7. Apr 2007 16:12

Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
 
Mti dieser kleinen Hilfsfunktion gehts:

Delphi-Quellcode:
procedure TZoomSpriteengine.SetZoom(const Value: integer);
var r: TRect;
    w,h: Integer;
begin
  FZoom := Value;
    r := FSurfaceRect;
  w := r.Right - r.Left;
  h := r.Bottom - r.Top;
 FSurfaceRect := Rect(r.Left - w * Zoom, r.Top - h * Zoom, r.Right + w *
    Zoom, r.Bottom + h * Zoom);
end;
FSurfaceRect ist ja nicht private sondern nur protected. Daher ist das so ohne weiteres machbar. GetSurfaceRect wird nämlich nie aufgerufen, weil nur im NotifyEvent auf SurfaceRect geschrieben wird und da wird direkt auf FSurfaceRect zugegriffen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr.
Seite 3 von 26     123 4513     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz