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

CollisionObjectSphere.h

Go to the documentation of this file.
00001 //---------------------------------------------------------------------------------
00002 // File Name: CollisionObjectSphere.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_COLLISIONOBJECTSPHERE_H
00015 #define TA_COLLISIONOBJECTSPHERE_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 CollisionObjectSphere : public CollisionObjectSimple
00034 {
00035 public:
00036     TA_OBFUSCATION_RESERVED_ON
00037     void Initialise(
00038         const Vec3& v3Center,
00039         float fRadius);
00040     void Finalise();
00042 
00043     #ifndef TA_WRAPPER  
00044     void Serialise(Serialiser& serialiser, const Version& version);
00045     #endif // TA_WRAPPER
00046 
00047     bool Serialisable() const { return true; }
00048 
00049     void Render(const MFrame& mFrame);
00050     AABB CalculateBoundingBox() const;
00051     void CalculateMass(float fDensity, float& fMass, Vec3& v3CenterOfMass, Mat33& m33Inertia) const;
00052 
00053     const Vec3& GetPoint() const;
00054     float GetRadius() const;
00055     
00056     virtual bool TestLineForCollision(
00057         const Vec3& v3Start,
00058         const Vec3& v3Normal,
00059         float fLength,
00060         Collision& collision) const;
00061 
00062     static CollisionObjectSphere* TAC_CALL CreateNew();
00063 
00064     TA_OBFUSCATION_RESERVED_OFF
00065 
00066 #ifndef DOXYGEN
00067     TA_DEFINE_FRIEND_SIMPLE_VS_SIMPLE_COLLISION(TestSphereAgainstSphere)
00068     TA_DEFINE_FRIEND_SIMPLE_VS_SIMPLE_COLLISION(TestSphereAgainstConvexObject)
00069     TA_DEFINE_FRIEND_SIMPLE_VS_SIMPLE_COLLISION(TestSphereAgainstCapsule)
00070     TA_DEFINE_FRIEND_SIMPLE_VS_SIMPLE_COLLISION(TestSphereAgainstCylinder)
00071     TA_DEFINE_FRIEND_SIMPLE_VS_SIMPLE_COLLISION(TestSphereAgainstLineList)
00072 
00073     TA_DEFINE_FRIEND_SIMPLE_VS_COMPLEX_COLLISION(TestSphereAgainstCachedPolyData)
00074 #endif // DOXYGEN
00075 
00076 private:
00077     float m_fRadius;
00078     Vec3 m_v3Center;
00079 
00080     CollisionObjectSphere();
00081     ~CollisionObjectSphere();
00082     
00083     virtual const char* GetFileHeaderString() const { return "TAColObjSphere"; }
00084 };
00085 
00086 inline const Vec3& CollisionObjectSphere::GetPoint() const { return m_v3Center; }
00087 inline float CollisionObjectSphere::GetRadius() const { return m_fRadius; }
00088 
00089 #ifndef DOXYGEN
00090 TA_DEFINE_SIMPLE_VS_SIMPLE_COLLISION(TestSphereAgainstSphere)
00091 TA_DEFINE_SIMPLE_VS_SIMPLE_COLLISION(TestSphereAgainstLineList)
00092 
00093 TA_DEFINE_SIMPLE_VS_COMPLEX_COLLISION(TestSphereAgainstCachedPolyData)
00094 #endif // DOXYGEN
00095 
00096 }
00097 
00098 
00099 #endif // TA_COLLISIONOBJECTSPHERE_H


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