Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Warum machst du denn das hier :
Code:
var Body : PNewtonBody;
PNewtonBondy (fängt ja mit P an) ist doch bereits ein Pointer, also hat da ein var nix zu suchen. Ich schätze mal es liegt daran. Wenn nicht, dann benutz doch mal den Debugger, mit allen aktiven Optionen und kommentiere solange aus bis du den Fehler gefunden hast.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Hm, PNewtonBody ist vom Typ Pointer, und da ein Pointer ja direkt auf einen Speicherbereich zeigt, ist ein var bei der Übergabe als Parameter eigentlich (immer) fehl am Platze. Aber da du Probleme beim Zugriff auf die Matrix des Newtonkörpers hast, und es ohne das var nicht geht (was nicht passieren darf!), läuft evtl. etwas bei der Zeigerzuweisung falsch. Hol dir die NewtonBodys also entweder ins Watchfenster, oder prüf einfach mal nach deren Erstellung ob diese nicht NIL sind. Ich tippe momentan eher auf ein Zuweisungsproblem, von daher könnte man der Sache so auf den Grund kommen.
Registriert: Mi Aug 28, 2002 19:27 Beiträge: 568 Wohnort: Chemnitz / Sachsen
also, hab grad mal bissl überwacht.
Ergebnis mit var :
BodyPin1 : $...
BodyPin2 : $...
BodyPin3 : $...
--> die genauen Werte habsch nu jetztt nicht aufgeschrieben, aber sind auch alles verschiedene, also da gibts auch keinen konflikt (nur so am rand)
Ergebnis ohne var :
BodyPin1 : nil
BodyPin2 : nil
BodyPin3 : nil
nu is aber meine komplette delphiwelt durcheinander!!!
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
@Pointer :
Ich nehm das zurück. Heisst zwar PNewtonBody, aber das ist tatsächlich kein Zeiger, sondern ein Zeiger auf einen Zeiger, also las das var doch besser drin.
@Matrix :
Probier mal die Matrizen statt in z.B. NewtonCreateBox mittels NewtonBodySetMatrix zu übergeben. Bei ersterem ist die Doku nicht so aussagekräftig, und es ist möglich dass mit dieser Matrix etwas anderes gemeint ist (da steht nämlich was von Offset-Matrix). Wenn du dann immernoch die selben Matrizen für allle Objekte hast, dann liegt da wirklich ein Zeiger-Problem vor. Da solltest du mal versuchen die oben gepostete Funktion zu inlinen, ist zwar Arbeit und bläht den Quellcode, aber wenns dann geht liegts an der Parameterübergabe. Evtl. wäre es auch keine schlechte Idee deine Pins in Klassen zu packen und diese dann an die Funktion zu übergeben, statt wie bisher PNewtonBody und TMatrix4f.
Registriert: Mi Aug 28, 2002 19:27 Beiträge: 568 Wohnort: Chemnitz / Sachsen
hallo sos, also die matrix bei NewtonCreateBox ist ja nur zu da, um das ganze zu verschieben (so hab ich das verstanden), aber ich werds mal so probieren mit setTransform.
mit inlinen meinst du sicherlich das einfach statt als prozedur zu hardcoden, also für jeden pin einzeiln zu schreiben (statt funktion). weil gibt auch nen befehl inline, wo ich keine ahnung mit hab.
ich hatte mir überlegt, mal ganz einfach deine glNewton3DS - Demo zu nehmen und statt boxen meine pins neizuschubsen und dann mal zu sehen, ob das geht. dann wüsste ich auf jeden fall, dass es besser ist (wie du sagtest und ich auch später machen wollte) die pins als objekte/klassen anzulegen.
schon mal erstmal vielen dank für die hilfe (die evtl. noch weiter andauern könnte). was würden manche nur ohne dich machen ??? thx!!!
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
rswm hat geschrieben:
hallo sos, also die matrix bei NewtonCreateBox ist ja nur zu da, um das ganze zu verschieben (so hab ich das verstanden), aber ich werds mal so probieren mit setTransform.
Ja, probiers halt wie gesagt mal mit NewtonBodySetMatrix. So hab ich das in meinen Demos nämlich auch gemacht, weil die Doku etwas undurchsichtig war, und man so auf der sicheren Seite ist.
rswm hat geschrieben:
mit inlinen meinst du sicherlich das einfach statt als prozedur zu hardcoden, also für jeden pin einzeiln zu schreiben (statt funktion). weil gibt auch nen befehl inline, wo ich keine ahnung mit hab.
Ja, das meinte ich damit, also jeden Pin "von Hand" erstellen und nicht über ne Funktion.
Registriert: Mi Aug 28, 2002 19:27 Beiträge: 568 Wohnort: Chemnitz / Sachsen
hallo, also ich hab jetzt das ganze mal so gemacht, wie gesagt, also jeden pin einzeln "von hand" zambasteln, da es per klasse paar probs gab (??? naja versuch ich nochmal).
nu hat das soweit geklappt, dass ich immerhin schonmal alle 3 pins fallen sehe (also von oben auf die bahn - habsch als test mal so gemacht). es falen wie gesagt alle 3, nur : einer bleibt mitten in der bahn liegen (also durchdringt zu teil die bahn) und die anderen beiden fallen durch.
Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.