Hallo,
gibt es hier welche die sich mit Bullet gut auskennen? Was ich habe:
ApplyCentralForce funktioniert, das Objekt bewegt sich dann auch von Frame zu Frame weiter wie man es erwarten würde.
ApplyTorque macht jedoch überhaupt nichts.
Und wenn zwei Objekte kollidieren bekomme ich kein entsprechendes Manifold.
Codestellen kann ich bei Bedarf natürlich weiter reichen.
Hier prüfe ich ob es Kollisonen gegeben hat. Da passiert aber nichts. (Ja ich bin mir bewusst, dass gcroots nicht unproblematisch sind)
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
void Physics::DoTickCallback ()
{
for each (MeshObject^ mo in m_objects)
{
mo->DoTickCallback ();
}
/* 31.12.2013: And now see if anything has collided. */
int manifoldcount = m_world->getDispatcher ()->getNumManifolds ();
for (int i = 0;i < manifoldcount;i++) {
btPersistentManifold* manifold = m_world->getDispatcher ()->getManifoldByIndexInternal (i);
const btCollisionObject* objA = manifold->getBody0 ();
const btCollisionObject* objB = manifold->getBody1 ();
/* Find objects to callback */
gcroot<MeshObject^>* objAgcr = (gcroot<MeshObject^>*)objA->getUserPointer ();
gcroot<MeshObject^>* objBgcr = (gcroot<MeshObject^>*)objB->getUserPointer ();
/* Now for each contact ... */
int contactcount = manifold->getNumContacts ();
for (int j = 0;j < contactcount;j++) {
btManifoldPoint& p = manifold->getContactPoint (j);
(*objAgcr)->DoCollision ();
(*objBgcr)->DoCollision ();
}
}
}
|