Funktionsintern int zu pointer deklarieren?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

hamztata

Betreff: Funktionsintern int zu pointer deklarieren?

BeitragSa, Apr 18, 2009 12:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Brauch mal einen kleinen tip von euch.
Ich bau grad an einem kleinen entitysystem.
Hatte ein ähnliches Thema im b bereich, nun geht es aber in bm ans eingemachte.
Also sagen wir es gibt für jede entität welche eine variable:int ist, eine funktionsinterne struktur.

Also beispielsweise Code: [AUSKLAPPEN]
PositionEntity(ent:int, x:int, y:int, z:int)   

ent ist aber nun ein integer, müsste ja aber auf eine struktur zeigen.

Achso vorher wird natürlich mittels sagen wir Code: [AUSKLAPPEN]
ent:int = LoadMesh(pfad:string)

ein mesh geladen.
Und da müsste es ja dann bei der zuweisung von ent:int zu einem pointer auf dessen struktur(type) werden.
Diese struktur würde alle relavanten eigenschaften enthalten(position, rotation, effekte, modell, etc. etc.)

Ein integer ist da natürlich denkabr schlecht, und ent direkt als pointer zu deklarieren finde ich als nicht so praktisch, weil unüblich.
Jemand eine idee wie man das am elegantesten lösen kann?

(ich kenn die art von minib3d, dort wars ja glaub ich gleich via klasse gelöst, aber ich würd das gern so haben wollen)
 

Ava

Gast

BeitragSa, Apr 18, 2009 12:16
Antworten mit Zitat
HandleFromObject:Int ( Obj:Object )
HandleToObject:Object ( Handle:Int )

Willkommen in der Steinzeit ... Rolling Eyes
 

hamztata

BeitragSa, Apr 18, 2009 12:51
Antworten mit Zitat
Benutzer-Profile anzeigen
allet kloar, danke dir....

Jolinah

BeitragSa, Apr 18, 2009 17:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
... , und ent direkt als pointer zu deklarieren finde ich als nicht so praktisch ...


Wieso denn das? Eine Referenz bzw. eine Objekt-Variable ist im Endeffekt nichts anderes als ein Int. Wenn du einer Funktion ein Objekt übergibst wird auch nicht das ganze Objekt kopiert sondern nur die Adresse (Int).

Daher kannst du getrost immer das Objekt übergeben, also z.B:

Code: [AUSKLAPPEN]
Local mesh:TMesh = LoadMesh("file.x")
PositionEntity(mesh, 10, 10, 10)


Wobei die Funktionen zum Beispiel so aussehen könnten:

Code: [AUSKLAPPEN]
Function LoadMesh:TMesh(file:String)
..
End Function

Function PositionEntity(ent:TEntity, x:Float, y:Float, z:Float)
...
End Function


Und TMesh könnte dann einfach von TEntity erben.

http://zehr.de/downloads/BlitzMax-OOP.pdf
 

hamztata

BeitragSa, Apr 18, 2009 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
ja eben, und ich wollte dazu übergehen, daß es kein TMesh oder TEntity für den coder gibt.
Alles standard int.
Der einfachheit halber.
Letztendlich kommt alles in eine dll(soll es irgendwann mal)
Und da ist das praktischer, oder nicht?

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group