Hallo,
ich bin zurzeit dran ein Spiel in Delphi zu coden... Dazu benutze ich die Truevision 3D Engine.
Als Levels benutze ich BSP levels wie in Quake3. Soweit funktionniert alles, nur will ich nun die Entity-Informationen (Dinge in der Map wie z.B. Waffen, healthpacks, usw.) aus der BSP auslesen. Solche Informationen wären z.B. Koordinaten, Eigenschaften, Name. Dazu hat die Engine einen speziellen Befehl. Leider ist die Dokumentation stark auf VisualBasic ausgelegt, da wohl mehr VB Nutzer vorhanden sind.
Könnt ihr mir mal helfen ein Stück VB in Delphi zu übersetzen?
In der Dokumentation heist es:
TVBSPTree.ParseEntity( EntitiesList() As TV_BSPENTITY)
Arguments :
EntitiesList() Empty Entity List array that will be resized and filled with entities properties.
Remark:
TV can parse all the entities but will actually not load anything from it, you have to load the models/meshs representing the entities yourself, simply because every game/application is different and we can't
handle every case.
Als VB Beispiel ist folgender code angegeben:
Dim entList() As TV_BSPENTITY
BSP.ParseEntity entList()
Ich hab's mal so versucht
Delphi-Quellcode:
var
entlist : TV_BSPENTITY;
begin
BSP.ParseEntity (entList);
Dazu meint der Compiler nur
[Fehler] Unit1.pas(262): Die Typen der tatsächlichen und formalen Var-Parameter müssen übereinstimmen
In den eingebundenen EngineUnits finde ich dieses:
Delphi-Quellcode:
TV_BSPENTITY = packed record
Origin: TV_VECTOR3;
_className: WideString;
PropKeys: PSafeArray;
PropVals: PSafeArray;
PropCount: Smallint;
end;
und
Delphi-Quellcode:
procedure TTVBSPTree.ParseEntity(var EntitiesList: PSafeArray);
begin
DefaultInterface.ParseEntity(EntitiesList);
end;
Was habe ich falsch gemacht?
Diese Funktion der Engine ist sehr wichtig für mich, da ich sonst die Positionen der Entities nur schwer herausfinden kann und wenn die Werte mal geparst sind, kann ich sie einzeln auslesen.
THX
Julian