![]() |
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 |
Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
Bitte !
Schade das sie noch nicht Platform unabhänig ist :( |
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 =(
|
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 |
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. |
Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
Wähl ein anderen DL-Server aus ;)
|
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) |
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 :) |
Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
Hallo,
erstmal danke fürs Testen, Zitat:
Zitat:
![]() Zitat:
Zitat:
Zitat:
Viel Spaß mit meiner Engine, ich freue mich über jede Rückmeldung, Igel457 |
Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
Hi Igel,
Zitat:
Zitat:
Gruß, Andreas |
Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
Zitat:
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 |
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:
Gruß, Andreas |
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:
Gruß, Andreas
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. |
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 ;)
|
Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
Zitat:
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:
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 |
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 |
Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
Ich habe den Schritt gewagt und mein Spiel
![]() Framerate ist, bei grafisch aufwändigen Leveln (viele kleine Einzelgrafiken) ca. 50-100x schneller (500-1000 statt ~10 FpS) .. *lob & freu* |
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: |
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? |
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: ![]() In Version 0.2 gibt es dann auch einen "Canvas", mit dem das noch viel einfacher geht. Noch viel Spaß, Igel457 |
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: ![]() 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: ![]() Das sieht im Spiel wie folgt aus (rechts als Vergleich so, wie es sein soll (reinkopiert)): ![]() Man beachte: grundsätzlich funktioniert es, bei dem schwarzen Balken sieht man rechts ein wenig den Hintergrund durchschimmern... Grüßle flo |
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 |
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 |
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 ![]() meine page: ![]() und hier brick mit andorra 2D : ![]() |
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 |
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 |
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 ![]() |
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:
Das Bild male ich so
with AdImageList.Add('figureLL') do
begin Texture.LoadGraphicFromFile('figureLL.bmp', true, clFuchsia); PatternWidth:=20; end;
Delphi-Quellcode:
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?
AdImageList.Find('figureLL').Draw(AdDraw,4*20, 4*20,Round(pattern));
€dit: Vergesst es, mein Fehler :wall: |
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 |
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. |
Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
Zitat:
![]() Die GUI ist komplett XML basierend. Die GUI wird ungefähr so verwendet werden können.
Delphi-Quellcode:
Vielleicht lade ich heute (oder morgen, oder übermorgen) mal eine Testverion hoch ;-).
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; Danke für die rege Nachfrage, igel457 |
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.
|
Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
Werde ich einbauen.
|
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 |
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:
|
Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
Zitat:
|
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: |
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; |
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:
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:
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;
Delphi-Quellcode:
Settings ist hier nur eine Hilfsklasse, um allerlei Einstellungen zu verwalten.
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; |
Re: Andorra 2D - The Next Generation 2D Engine [Ver. 0.15]
Mti dieser kleinen Hilfsfunktion gehts:
Delphi-Quellcode:
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.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr. |
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