00001 /* 00002 * Copyright (c) 2006-2009 Erin Catto http://www.box2d.org 00003 * 00004 * This software is provided 'as-is', without any express or implied 00005 * warranty. In no event will the authors be held liable for any damages 00006 * arising from the use of this software. 00007 * Permission is granted to anyone to use this software for any purpose, 00008 * including commercial applications, and to alter it and redistribute it 00009 * freely, subject to the following restrictions: 00010 * 1. The origin of this software must not be misrepresented; you must not 00011 * claim that you wrote the original software. If you use this software 00012 * in a product, an acknowledgment in the product documentation would be 00013 * appreciated but is not required. 00014 * 2. Altered source versions must be plainly marked as such, and must not be 00015 * misrepresented as being the original software. 00016 * 3. This notice may not be removed or altered from any source distribution. 00017 */ 00018 00019 #ifndef B2_CIRCLE_SHAPE_H 00020 #define B2_CIRCLE_SHAPE_H 00021 00022 #include <Box2D/Collision/Shapes/b2Shape.h> 00023 00025 class b2CircleShape : public b2Shape 00026 { 00027 public: 00028 b2CircleShape(); 00029 00031 b2Shape* Clone(b2BlockAllocator* allocator) const; 00032 00034 int32 GetChildCount() const; 00035 00037 bool TestPoint(const b2Transform& transform, const b2Vec2& p) const; 00038 00040 bool RayCast(b2RayCastOutput* output, const b2RayCastInput& input, 00041 const b2Transform& transform, int32 childIndex) const; 00042 00044 void ComputeAABB(b2AABB* aabb, const b2Transform& transform, int32 childIndex) const; 00045 00047 void ComputeMass(b2MassData* massData, float32 density) const; 00048 00050 int32 GetSupport(const b2Vec2& d) const; 00051 00053 const b2Vec2& GetSupportVertex(const b2Vec2& d) const; 00054 00056 int32 GetVertexCount() const { return 1; } 00057 00059 const b2Vec2& GetVertex(int32 index) const; 00060 00062 b2Vec2 m_p; 00063 }; 00064 00065 inline b2CircleShape::b2CircleShape() 00066 { 00067 m_type = e_circle; 00068 m_radius = 0.0f; 00069 m_p.SetZero(); 00070 } 00071 00072 inline int32 b2CircleShape::GetSupport(const b2Vec2 &d) const 00073 { 00074 B2_NOT_USED(d); 00075 return 0; 00076 } 00077 00078 inline const b2Vec2& b2CircleShape::GetSupportVertex(const b2Vec2 &d) const 00079 { 00080 B2_NOT_USED(d); 00081 return m_p; 00082 } 00083 00084 inline const b2Vec2& b2CircleShape::GetVertex(int32 index) const 00085 { 00086 B2_NOT_USED(index); 00087 b2Assert(index == 0); 00088 return m_p; 00089 } 00090 00091 #endif