X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?a=blobdiff_plain;f=src%2FEntities%2FPolygon.cpp;h=9f1aa43aabf04d9fb4e78b9d7526887a76d4c2db;hb=389bf8fdd7e1b8f4fe21e5a9fdb477d40d03d829;hp=42cfbdbc71331b530ee87e0d0eb832187ea33583;hpb=3d1f081343dc603a3292538eeb9bd794b255deb6;p=physics.git diff --git a/src/Entities/Polygon.cpp b/src/Entities/Polygon.cpp index 42cfbdb..9f1aa43 100644 --- a/src/Entities/Polygon.cpp +++ b/src/Entities/Polygon.cpp @@ -17,15 +17,22 @@ #include "Polygon.h" -#include "Vector2.h" +#include +#include +using namespace bear; + +#include "graphics/graphics.h" /// ***** Constructors/Destructors ***** -Polygon::Polygon(const Vector2& pos, vector points) - : PhysicsEntity(pos), points(points) +Polygon::Polygon(const vector& points, const float* color) + : PhysicsEntity(Vector2(0,0)), m_points(points), m_color(color) { + DASSERT(0 < points.size()); + createBindingBox(); + centerPosition(); } Polygon::~Polygon() { @@ -36,11 +43,28 @@ Polygon::~Polygon() void Polygon::draw() const { - // TODO + graphics::drawPolygon(m_points, m_color); } /// ***** Private Class Methods ***** void Polygon::createBindingBox() { + DASSERT(0 < m_points.size()); + + m_maxP = m_points.at(0); + m_minP = m_points.at(0); + + for(unsigned int i=1; i m_maxP.m_fX) m_maxP.m_fX = m_points[i].m_fX; + + if(m_points[i].m_fY < m_minP.m_fY) m_minP.m_fY = m_points[i].m_fY; + else if(m_points[i].m_fY > m_maxP.m_fY) m_maxP.m_fY = m_points[i].m_fY; + } +} + +void Polygon::centerPosition() +{ // TODO }