1 %module btRigidBody 2 3 %{ 4 #include <BulletDynamics/Dynamics/btRigidBody.h> 5 %} 6 7 %rename(i_motionState) btRigidBody::btRigidBodyConstructionInfo::m_motionState; 8 %javamethodmodifiers btRigidBody::btRigidBodyConstructionInfo::m_motionState "private"; 9 %rename(i_collisionShape) btRigidBody::btRigidBodyConstructionInfo::m_collisionShape; 10 %javamethodmodifiers btRigidBody::btRigidBodyConstructionInfo::m_collisionShape "private"; 11 12 %javamethodmodifiers btRigidBody::btRigidBodyConstructionInfo::btRigidBodyConstructionInfo "private"; 13 14 %ignore btRigidBody::btRigidBodyConstructionInfo::btRigidBodyConstructionInfo(btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape); 15 %ignore btRigidBody::btRigidBodyConstructionInfo::btRigidBodyConstructionInfo(btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia); 16 17 %typemap(javaout) btRigidBody *, const btRigidBody *, btRigidBody * const & { 18 return btRigidBody.getInstance($jnicall, $owner); 19 } 20 21 %typemap(javaout) btRigidBody, const btRigidBody, btRigidBody & { 22 return btRigidBody.getInstance($jnicall, $owner); 23 } 24 25 %typemap(javadirectorin) btRigidBody *, const btRigidBody *, btRigidBody * const & "btRigidBody.getInstance($1, false)" 26 27 %typemap(javacode) btRigidBody::btRigidBodyConstructionInfo %{ 28 protected btMotionState motionState; 29 setMotionState(btMotionState motionState)30 public void setMotionState(btMotionState motionState) { 31 refMotionState(motionState); 32 setI_motionState(motionState); 33 } 34 refMotionState(btMotionState motionState)35 protected void refMotionState(btMotionState motionState) { 36 if (this.motionState == motionState) 37 return; 38 if (this.motionState != null) 39 this.motionState.release(); 40 this.motionState = motionState; 41 if (this.motionState != null) 42 this.motionState.obtain(); 43 } 44 getMotionState()45 public btMotionState getMotionState() { 46 return motionState; 47 } 48 49 protected btCollisionShape collisionShape; 50 setCollisionShape(btCollisionShape collisionShape)51 public void setCollisionShape(btCollisionShape collisionShape) { 52 refCollisionShape(collisionShape); 53 setI_collisionShape(collisionShape); 54 } 55 refCollisionShape(btCollisionShape shape)56 protected void refCollisionShape(btCollisionShape shape) { 57 if (collisionShape == shape) 58 return; 59 if (collisionShape != null) 60 collisionShape.release(); 61 collisionShape = shape; 62 if (collisionShape != null) 63 collisionShape.obtain(); 64 } 65 getCollisionShape()66 public btCollisionShape getCollisionShape() { 67 return collisionShape; 68 } 69 btRigidBodyConstructionInfo(float mass,btMotionState motionState,btCollisionShape collisionShape,Vector3 localInertia)70 public btRigidBodyConstructionInfo(float mass, btMotionState motionState, btCollisionShape collisionShape, Vector3 localInertia) { 71 this(false, mass, motionState, collisionShape, localInertia); 72 refMotionState(motionState); 73 refCollisionShape(collisionShape); 74 } 75 btRigidBodyConstructionInfo(float mass,btMotionState motionState,btCollisionShape collisionShape)76 public btRigidBodyConstructionInfo(float mass, btMotionState motionState, btCollisionShape collisionShape) { 77 this(false, mass, motionState, collisionShape); 78 refMotionState(motionState); 79 refCollisionShape(collisionShape); 80 } 81 82 @Override dispose()83 public void dispose() { 84 if (motionState != null) 85 motionState.release(); 86 motionState = null; 87 if (collisionShape != null) 88 collisionShape.release(); 89 collisionShape = null; 90 super.dispose(); 91 } 92 %} 93 94 %extend btRigidBody::btRigidBodyConstructionInfo { 95 btRigidBodyConstructionInfo(bool dummy, btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia=btVector3(0,0,0)) { 96 return new btRigidBody::btRigidBodyConstructionInfo(mass, motionState, collisionShape, localInertia); 97 } 98 }; 99 100 %ignore btRigidBody::upcast(const btCollisionObject*); 101 %ignore btRigidBody::upcast(btCollisionObject*); 102 %ignore btRigidBody::btRigidBody(const btRigidBodyConstructionInfo& constructionInfo); 103 %ignore btRigidBody::btRigidBody(btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia=btVector3(0,0,0)); 104 105 %javamethodmodifiers btRigidBody::btRigidBody "private"; 106 107 %rename(internalGetMotionState) btRigidBody::getMotionState; 108 %javamethodmodifiers btRigidBody::getMotionState "private"; 109 %rename(internalSetMotionState) btRigidBody::setMotionState; 110 %javamethodmodifiers btRigidBody::setMotionState "private"; 111 %ignore btRigidBody::getCollisionShape; 112 113 %extend btRigidBody { btRigidBody(bool dummy,const btRigidBody::btRigidBodyConstructionInfo & constructionInfo)114 btRigidBody(bool dummy, const btRigidBody::btRigidBodyConstructionInfo& constructionInfo) { 115 return new btRigidBody(constructionInfo); 116 } 117 btRigidBody(bool dummy, btScalar mass, btMotionState* motionState, btCollisionShape* collisionShape, const btVector3& localInertia=btVector3(0,0,0)) { 118 return new btRigidBody(mass, motionState, collisionShape, localInertia); 119 } 120 }; 121 122 %typemap(javacode) btRigidBody %{ 123 protected btMotionState motionState; 124 125 /** @return The existing instance for the specified pointer, or null if the instance doesn't exist */ getInstance(final long swigCPtr)126 public static btRigidBody getInstance(final long swigCPtr) { 127 return (btRigidBody)btCollisionObject.getInstance(swigCPtr); 128 } 129 130 /** @return The existing instance for the specified pointer, or a newly created instance if the instance didn't exist */ getInstance(final long swigCPtr,boolean owner)131 public static btRigidBody getInstance(final long swigCPtr, boolean owner) { 132 if (swigCPtr == 0) 133 return null; 134 btRigidBody result = getInstance(swigCPtr); 135 if (result == null) 136 result = new btRigidBody(swigCPtr, owner); 137 return result; 138 } 139 btRigidBody(btRigidBodyConstructionInfo constructionInfo)140 public btRigidBody(btRigidBodyConstructionInfo constructionInfo) { 141 this(false, constructionInfo); 142 refCollisionShape(constructionInfo.getCollisionShape()); 143 refMotionState(constructionInfo.getMotionState()); 144 } 145 btRigidBody(float mass,btMotionState motionState,btCollisionShape collisionShape,Vector3 localInertia)146 public btRigidBody(float mass, btMotionState motionState, btCollisionShape collisionShape, Vector3 localInertia) { 147 this(false, mass, motionState, collisionShape, localInertia); 148 refCollisionShape(collisionShape); 149 refMotionState(motionState); 150 } 151 btRigidBody(float mass,btMotionState motionState,btCollisionShape collisionShape)152 public btRigidBody(float mass, btMotionState motionState, btCollisionShape collisionShape) { 153 this(false, mass, motionState, collisionShape); 154 refCollisionShape(collisionShape); 155 refMotionState(motionState); 156 } 157 setMotionState(btMotionState motionState)158 public void setMotionState(btMotionState motionState) { 159 refMotionState(motionState); 160 internalSetMotionState(motionState); 161 } 162 refMotionState(btMotionState motionState)163 protected void refMotionState(btMotionState motionState) { 164 if (this.motionState == motionState) 165 return; 166 if (this.motionState != null) 167 this.motionState.release(); 168 this.motionState = motionState; 169 if (this.motionState != null) 170 this.motionState.obtain(); 171 } 172 getMotionState()173 public btMotionState getMotionState() { 174 return motionState; 175 } 176 177 @Override dispose()178 public void dispose() { 179 if (motionState != null) 180 motionState.release(); 181 motionState = null; 182 super.dispose(); 183 } 184 %} 185 186 %include "BulletDynamics/Dynamics/btRigidBody.h" 187