00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #include "bulletClosestHitRayResult.h"
00016
00017
00018
00019
00020
00021
00022 BulletClosestHitRayResult::
00023 BulletClosestHitRayResult(const btVector3 &from_pos, const btVector3 &to_pos, const CollideMask &mask)
00024 : btCollisionWorld::ClosestRayResultCallback(from_pos, to_pos), _mask(mask) {
00025
00026 }
00027
00028
00029
00030
00031
00032
00033 bool BulletClosestHitRayResult::
00034 needsCollision(btBroadphaseProxy* proxy0) const {
00035
00036
00037
00038
00039
00040
00041 btCollisionObject *obj0 = (btCollisionObject *) proxy0->m_clientObject;
00042 PandaNode *node0 = (PandaNode *) obj0->getUserPointer();
00043 CollideMask mask0 = node0->get_into_collide_mask();
00044
00045 return (_mask & mask0) != 0;
00046 }
00047
00048
00049
00050
00051
00052
00053 bool BulletClosestHitRayResult::
00054 has_hit() const {
00055
00056 return hasHit();
00057 }
00058
00059
00060
00061
00062
00063
00064 PN_stdfloat BulletClosestHitRayResult::
00065 get_hit_fraction() const {
00066
00067 return (PN_stdfloat)m_closestHitFraction;
00068 }
00069
00070
00071
00072
00073
00074
00075 PandaNode *BulletClosestHitRayResult::
00076 get_node() const {
00077
00078 btCollisionObject *objectPtr = m_collisionObject;
00079 return (objectPtr) ? (PandaNode *)objectPtr->getUserPointer() : NULL;
00080 }
00081
00082
00083
00084
00085
00086
00087 LPoint3 BulletClosestHitRayResult::
00088 get_hit_pos() const {
00089
00090 return btVector3_to_LPoint3(m_hitPointWorld);
00091 }
00092
00093
00094
00095
00096
00097
00098 LVector3 BulletClosestHitRayResult::
00099 get_hit_normal() const {
00100
00101 return btVector3_to_LVector3(m_hitNormalWorld);
00102 }
00103
00104
00105
00106
00107
00108
00109 LPoint3 BulletClosestHitRayResult::
00110 get_from_pos() const {
00111
00112 return btVector3_to_LPoint3(m_rayFromWorld);
00113 }
00114
00115
00116
00117
00118
00119
00120 LPoint3 BulletClosestHitRayResult::
00121 get_to_pos() const {
00122
00123 return btVector3_to_LPoint3(m_rayToWorld);
00124 }
00125