1 %module(directors="1") btDbvt 2 3 %feature("flatnested") btDbvt::ICollide; 4 %feature("director") ICollide; 5 6 %typemap(javadirectorin) btDbvtNode, const btDbvtNode, const btDbvtNode &, btDbvtNode & "btDbvtNode.obtainForArgument($1, false)" 7 %typemap(javadirectorin) btDbvtNode *, const btDbvtNode *, btDbvtNode * const & "btDbvtNode.obtainForArgument($1, false)" 8 %typemap(javaout) btDbvtNode *, const btDbvtNode *, btDbvtNode * const & { 9 return btDbvtNode.internalTemp($jnicall, $owner); 10 } 11 %typemap(javacode) btDbvtNode %{ 12 private final static btDbvtNode temp = new btDbvtNode(0, false); 13 /** Obtains a temporary instance, used by native methods that return a btDbvtNode instance */ 14 public static btDbvtNode internalTemp(long cPtr, boolean own) { 15 temp.reset(cPtr, own); 16 return temp; 17 } 18 private static btDbvtNode[] argumentInstances = new btDbvtNode[] {new btDbvtNode(0, false), 19 new btDbvtNode(0, false), new btDbvtNode(0, false), new btDbvtNode(0, false)}; 20 private static int argumentIndex = -1; 21 /** Obtains a temporary instance, used for callback methods with one or more btDbvtNode arguments */ 22 protected static btDbvtNode obtainForArgument(final long swigCPtr, boolean owner) { 23 btDbvtNode instance = argumentInstances[argumentIndex = (argumentIndex + 1) & 3]; 24 instance.reset(swigCPtr, owner); 25 return instance; 26 } 27 %} 28 %typemap(javadirectorin) btDbvtAabbMm, const btDbvtAabbMm, const btDbvtAabbMm &, btDbvtAabbMm & "btDbvtAabbMm.obtainForArgument($1, false)" 29 %typemap(javadirectorin) btDbvtAabbMm *, const btDbvtAabbMm *, btDbvtAabbMm * const & "btDbvtAabbMm.obtainForArgument($1, false)" 30 %typemap(javaout) btDbvtAabbMm *, const btDbvtAabbMm *, btDbvtAabbMm * const & { 31 return btDbvtAabbMm.internalTemp($jnicall, $owner); 32 } 33 %typemap(javacode) btDbvtAabbMm %{ 34 private final static btDbvtAabbMm temp = new btDbvtAabbMm(0, false); 35 /** Obtains a temporary instance, used by native methods that return a btDbvtAabbMm instance */ 36 public static btDbvtAabbMm internalTemp(long cPtr, boolean own) { 37 temp.reset(cPtr, own); 38 return temp; 39 } 40 private static btDbvtAabbMm[] argumentInstances = new btDbvtAabbMm[] {new btDbvtAabbMm(0, false), 41 new btDbvtAabbMm(0, false), new btDbvtAabbMm(0, false), new btDbvtAabbMm(0, false)}; 42 private static int argumentIndex = -1; 43 /** Obtains a temporary instance, used for callback methods with one or more btDbvtAabbMm arguments */ 44 protected static btDbvtAabbMm obtainForArgument(final long swigCPtr, boolean owner) { 45 btDbvtAabbMm instance = argumentInstances[argumentIndex = (argumentIndex + 1) & 3]; 46 instance.reset(swigCPtr, owner); 47 return instance; 48 } 49 %} 50 51 %{ 52 #include <BulletCollision/BroadphaseCollision/btDbvt.h> 53 %} 54 %include "BulletCollision/BroadphaseCollision/btDbvt.h" 55 56 %{ 57 #include <BulletCollision/BroadphaseCollision/btDbvtBroadphase.h> 58 %} 59 %include "BulletCollision/BroadphaseCollision/btDbvtBroadphase.h" 60 61 %extend btDbvt { 62 static void collideKDOP(const btDbvtNode* root, 63 const btScalar* normals, 64 const btScalar* offsets, 65 int count, 66 btDbvt::ICollide &policy) { 67 btDbvt::collideKDOP(root, (btVector3*)normals, offsets, count, policy); 68 } 69 70 static void collideOCL( const btDbvtNode* root, 71 const btScalar* normals, 72 const btScalar* offsets, 73 const btVector3& sortaxis, 74 int count, 75 btDbvt::ICollide &policy, 76 bool fullsort=true) { 77 btDbvt::collideOCL(root, (btVector3*)normals, offsets, sortaxis, count, policy, fullsort); 78 } 79 }; 80 81 %extend btDbvtBroadphase { 82 btDbvt *getSet(const int &index) { 83 return &($self->m_sets[index]); 84 } 85 btDbvt *getSet0() { 86 return &($self->m_sets[0]); 87 } 88 btDbvt *getSet1() { 89 return &($self->m_sets[1]); 90 } 91 }; 92 93 %extend btDbvtNode { 94 btDbvtNode *getChild(const int &index) { 95 return $self->childs[index]; 96 } 97 98 btDbvtNode *getChild0() { 99 return $self->childs[0]; 100 } 101 102 btDbvtNode *getChild1() { 103 return $self->childs[1]; 104 } 105 106 btBroadphaseProxy *getDataAsProxy() { 107 return (btBroadphaseProxy*)$self->data; 108 } 109 110 btCollisionObject *getDataAsProxyClientObject() { 111 return ($self->isleaf()) ? (btCollisionObject*)((btBroadphaseProxy*)$self->data)->m_clientObject : NULL; 112 } 113 }; 114 115