Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit PSavearray (https://www.delphipraxis.net/26179-problem-mit-psavearray.html)

Doener 19. Jul 2004 19:25


Problem mit PSavearray
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 Uhr.

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