Entity-ID überprüfen?
Übersicht

GastBetreff: Entity-ID überprüfen? |
![]() Antworten mit Zitat |
|
---|---|---|
Hi! ![]() Hier zur Veranschaulichung meines Problems zuerst ein simples Beispiel: Code: [AUSKLAPPEN] entity = createsphere(16) Dabei wird in der variable "entity" ja die ID der erstellten Kugel gespeichert, über die man das Objekt dann per MoveEntity, ect.. beeinflussen kann. Nun meine Frage: Gibt es eine Möglichkeit zu überprüfen, ob die ID, die in der Variable gespeichert, ist überhaupt noch zu einem gültigen objekt führt, oder ob es schon gelöscht wurde? Wenn man versucht das Objekt anzusprechen, obwohl es nicht mehr existiert kommt es ja zum error...Das möchte ich verhindern, indem ich die ID vorher überprüfe. Würde mich freuen, falls jemand eine Idee hätte! ![]() |
||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn z.B. LoadMesh nicht klappt, gibt es als ID eine 0 zurück. Du musst eben prüfen, ob die Zahl <> 0 ist. Wenn du den Entity freigibst, solltest du die Variable auch noch auf 0 setzen. Eine andere Lösung gibts meines Wissens nicht. | ||
![]() |
eizdealer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, dieses Problem hat keine Lösung. Das ist leider in der internen Struktur von B3D so festgelegt. Die einzige Möglichkeit wäre, die Struktur zu hacken. Aber das hat bisher noch keiner geschafft ![]() Wenn du sauber codest, ist das aber in der Regel auch kein Problem. Dazu gehört zum einen nach jeder Ladeanweisung eine Überprüfung, ob das Laden erfolgreich war, wie Edlothiol schon gesagt hat. Zum anderen solltest du grundsätzlich nach jedem FreeXXX Befehl die Variable des Handles auf 0 setzen. So kannst du vor jedem Befehlblock, vor dem du dir unsicher bist, ob das Entity noch existiert, eine einfache Überprüfung machen, ob die Variable ungleich 0 ist. |
||
Gast |
![]() Antworten mit Zitat |
|
---|---|---|
Ok, dann muss ich doch mit dem umständlichen Weg weiter machen.
Trotzdem thx für die Antworten, ich wollte nur sicher gehen, dass ich keine andere Möglichkeit übersehen habe ![]() Ich hätte eine etwas elegantere Lösung für meinen space-shooter brauchen können: hab da mehrere von der KI gesteuerte Raumschiffe, die sich gegenseitig bekämpfen. Ich hab das ganze mit einem Type gelöst, folglich hat jedes Schiff ein Field für das anzugreifende Ziel und es ist eben etwas umständlich, wenn jedes Schiff bei seiner Zerstörung erst noch bei jedem anderen nachfragen muss, ob es gerade Ziel war, um dann die Variable auf Null zu setzen ![]() Gruß, Marwius |
||
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei Types gibt es aber so eine Abfrage:
BlitzBasic: [AUSKLAPPEN]
Wenn Du also das anzugreifende Ziel auf den Typeeintrag und nicht auf das Entity referenzierst, kannst Du mit "Null" die Existenz dieses Eintrags abfragen. |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group