True Axis Physics SDK 1.2.0.1 Beta Documentation
www.trueaxis.com

CollisionObjectCapsule.h

Go to the documentation of this file.
00001 //---------------------------------------------------------------------------------
00002 // File Name: CollisionObjectCapsule.h
00003 // Description:
00006 //
00007 // Copyright (C) 2004 - 2006 True Axis Pty Ltd, Australia. 
00008 // All Rights Reserved.
00009 //
00010 // History:
00011 //      Created File.
00012 //---------------------------------------------------------------------------------
00013 
00014 #ifndef TA_COLLISIONOBJECTCAPSULE_H
00015 #define TA_COLLISIONOBJECTCAPSULE_H
00016 
00017 #ifndef TA_COLLISION_H
00018 #include "Collision.h"
00019 #endif // TA_COLLISION_H
00020 
00021 #ifndef TA_COLLISIONOBJECTSIMPLE_H
00022 #include "CollisionObjectSimple.h"
00023 #endif // TA_COLLISIONOBJECTSIMPLE_H
00024 
00025 TA_OBFUSCATION_SKIP_PASS_2
00026 
00027 namespace TA
00028 {
00029 
00030 struct MFrame;
00031 class CollisionObjectCachedPolyData;
00032 
00033 class TAPHYSICS_CLASS CollisionObjectCapsule : public CollisionObjectSimple
00034 {
00035 public:
00036     TA_OBFUSCATION_RESERVED_ON
00037     void Initialise(
00038         const Vec3& v3PointA,
00039         const Vec3& v3PointB,
00040         float fRadius);
00041     void Finalise();
00043 
00044 #ifndef TA_WRAPPER  
00045     void Serialise(Serialiser& serialiser, const Version& version);
00046 #endif // TA_WRAPPER
00047 
00048     bool Serialisable() const { return true; }
00049 
00050     void Render(const MFrame& mFrame);
00051     AABB CalculateBoundingBox() const;
00052     void CalculateMass(float fDensity, float& fMass, Vec3& v3CenterOfMass, Mat33& m33Inertia) const;
00053 
00054     const Vec3& GetPointA() const;
00055     const Vec3& GetPointB() const;
00056     float GetRadius() const;
00057     
00058     virtual bool TestLineForCollision(
00059         const Vec3& v3Start,
00060         const Vec3& v3Normal,
00061         float fLength,
00062         Collision& collision) const;
00063 
00064     static CollisionObjectCapsule* TAC_CALL CreateNew();
00065     TA_OBFUSCATION_RESERVED_OFF
00066 
00067 #ifndef DOXYGEN
00068     TA_DEFINE_FRIEND_SIMPLE_VS_SIMPLE_COLLISION(TestCapsuleAgainstCapsule)
00069     TA_DEFINE_FRIEND_SIMPLE_VS_SIMPLE_COLLISION(TestCapsuleAgainstConvexObject) 
00070     TA_DEFINE_FRIEND_SIMPLE_VS_SIMPLE_COLLISION(TestSphereAgainstCapsule)
00071     TA_DEFINE_FRIEND_SIMPLE_VS_SIMPLE_COLLISION(TestCapsuleAgainstCylinder)
00072     TA_DEFINE_FRIEND_SIMPLE_VS_SIMPLE_COLLISION(TestCapsuleAgainstLineList)
00073 
00074     TA_DEFINE_FRIEND_SIMPLE_VS_COMPLEX_COLLISION(TestCapsuleAgainstCachedPolyData)
00075 #endif // DOXYGEN
00076 
00077 
00078 private:
00079     float m_fRadius;
00080     Vec3 m_v3A;
00081     Vec3 m_v3B;
00082 
00083     CollisionObjectCapsule();
00084     ~CollisionObjectCapsule();
00085     virtual const char* GetFileHeaderString() const { return "TAColObjCapsule"; }
00086 };
00087 
00088 inline const Vec3& CollisionObjectCapsule::GetPointA() const { return m_v3A; }
00089 inline const Vec3& CollisionObjectCapsule::GetPointB() const { return m_v3B; }
00090 inline float CollisionObjectCapsule::GetRadius() const { return m_fRadius; }
00091 
00092 #ifndef DOXYGEN
00093 TA_DEFINE_SIMPLE_VS_SIMPLE_COLLISION(TestCapsuleAgainstCapsule)
00094 TA_DEFINE_SIMPLE_VS_SIMPLE_COLLISION(TestSphereAgainstCapsule)
00095 TA_DEFINE_SIMPLE_VS_SIMPLE_COLLISION(TestCapsuleAgainstLineList)
00096 
00097 TA_DEFINE_SIMPLE_VS_COMPLEX_COLLISION(TestCapsuleAgainstCachedPolyData)
00098 #endif // DOXYGEN
00099 
00100 };
00101 
00102 #endif // TA_COLLISIONOBJECTCAPSULE_H


© Copyright 2004-2006 TRUE AXIS PTY LTD Australia. All rights reserved.