Home | History | Annotate | Download | only in collision
      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