So,
Es sieh sehr gut aus mit RUTIS.
Nachdem es jetzt in einem vorerst abgeschlossenem Zustand ist, habe ich vor, das ganze in ein Projekt zu integrieren.
Es soll sich dabei um eine 3D-Game-Engine handeln, die der Nachfolger meiner schon nicht schlechten
LOZ-Engine werden soll.
Dabei wird eben RUTIS ein wichtiger Bestandteil dieser Engine sein, und man soll fast vollständigen Zuriff auf die Objekte
der Engine (Player usw.) aus den Scripten heraus haben.
Des Weiteren arbeite ich noch daran, Records auszubauen und die Mehode zur Analyse von Ausdrücken ("a := 1+2; <- Der Teil hinter ":=") zu verbessern.
Vr allem durch das neue Projekt haben sich ein paar tolle Änderungen in RUTIS eingeschlichen.
Zunächst einmal werden nun Record-Felder genau so ausgerichtet, wie es in Delphi geschieht.
D.h. ein Record aus Delphi und RUTIS sind 100% zuweisungskompatibel. Über eien Trick lassen sich sogar Klassen mit Records gleichsetzen
Außerdem kann schon von Records einen Nachfahren erstellen.
Bsp:
Delphi-Quellcode:
type
_TEntity =
record
// VMT ist der erste eintrag in einer Delphi-Klasse. Dort werden die virtuellen methoden und klassentyp usw. abgespeichert
VMT : Pointer;
Location : TVector3f;
Rotation : TVector3f;
Velocity : TVector3f;
end;
TEntity = ^_TEntity;
_TCamera =
record (_TEntity)
FieldOfView : Single;
end;
TCamera = ^_TCamera;
Wenn man nun in Delphi die entsprechenden Klassendeklarationen zu TEntity und TCamera hat (ohne den
VMT.Eintrag natürlich
),
so kann man, wenn man sich den Pointer der Klasse aus Delphi in RUTIS reinholt, die Einträge der Klasse direkt Verwenden.
Da das alles schon so ut funktioniert, werde ich wohl bald damit anfangen
OOP (zumindest in einfachster Form) zu implementieren.
Einziges Manko ist noch, das Strings aus RUTIS und Delphi nicht direkt kompatibel sind, da Strings in RUTIS als
PAnsiString und nicht als AnsiString gespeichert werden (aus Gründen der Speicherverwaltung).
Ich werde wohl noch einen Typ DAnsiString / STrng (Delphi-String) einführen, damit ich einen kompatiblen Typ für Delphi besitze.
PS: Die genannten Änderungen an Records befinden sich noch nicht im Download, da ich damit noch nicht fertig bin.
Wenn jmd jedoch Interesse hat, das zu testen, kann ich es jetzt schon hochladen.
MFG