12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #include "Terrain.h"
- Terrain::Terrain( const unsigned int size )
- : m_size( size ), m_nextAdd( 0 ), m_plot( 0x0 )
- {
- m_plot = new b2Vec2[ size ];
- }
- Terrain::~Terrain()
- {
- delete[] m_plot ;
- m_plot = 0x0 ;
- }
-
- void Terrain::addPlot( float x, float y )
- {
- if ( m_nextAdd == m_size )
- return ;
- m_plot[ m_nextAdd ].Set( x, y );
- m_nextAdd ++;
- }
- void Terrain::build( b2World &world )
- {
- b2BodyDef areaDef;
- areaDef.position.Set(0.0f, 0.0f);
- b2Body* areaBody = world.CreateBody(&areaDef);
- b2ChainShape chain;
- chain.CreateChain( m_plot, m_nextAdd, m_plot[0], m_plot[m_size - 1] );
- areaBody->CreateFixture( &chain, 0.0f );
- }
- void Terrain::draw( SDL_Surface* screen, b2Vec2 origin )
- {
- int x1, y1, x2, y2 ;
- for ( unsigned int i(0); i < m_nextAdd - 1 ; i++ )
- {
- x1 = ( m_plot[i].x - origin.x ) * MULTI ;
- y1 = ( m_plot[i].y - origin.y ) * MULTI ;
- x2 = ( m_plot[i + 1].x - origin.x ) * MULTI ;
- y2 = ( m_plot[i + 1].y - origin.y ) * MULTI ;
- lineRGBA (screen, x1, y1, x2, y2, 255, 0, 0, 255);
- }
- }
|