8 #include "BoxTerrain.h" 10 BoxTerrain::BoxTerrain(){};
12 BoxTerrain::BoxTerrain(b2World* world, sf::RenderWindow& window,
config::sTerrain terrainParam,
int WINDOW_X_PX,
double bodyLength)
13 :
Terrain(world, window, terrainParam, WINDOW_X_PX, bodyLength){
15 m_M_TO_PX = WINDOW_X_PX / (1.2*m_width);
16 m_posY=window.getSize().y/m_M_TO_PX - (window.getSize().y/m_M_TO_PX-m_height)/2;
17 m_window_x = window.getSize().x;
18 m_window_y = window.getSize().y;
22 BoxTerrain::~BoxTerrain() {
28 m_M_TO_PX = WINDOW_X_PX / (1.2*m_width);
29 printf(
"m_M_TO_PX: %f, \n", m_M_TO_PX);
30 m_posY=window.getSize().y/m_M_TO_PX - (window.getSize().y/m_M_TO_PX-m_height)/2;
31 m_window_x = window.getSize().x;
32 m_window_y = window.getSize().y;
38 BodyDef.position = b2Vec2(0, 0);
39 BodyDef.type = b2_staticBody;
40 m_groundBody = world->CreateBody(&BodyDef);
42 b2EdgeShape edgeShape;
43 float h = m_window_y/m_M_TO_PX-m_height;
44 float l = m_window_x/m_M_TO_PX-m_width;
46 b2FixtureDef topEdgeFixtureDef;
47 edgeShape.Set( b2Vec2(l/2,h/2), b2Vec2(m_window_x/m_M_TO_PX - l/2,h/2) );
48 topEdgeFixtureDef.shape = &edgeShape;
49 m_groundBody->CreateFixture(&topEdgeFixtureDef);
51 b2FixtureDef bottomEdgeFixtureDef;
52 edgeShape.Set( b2Vec2(l/2,m_window_y/m_M_TO_PX - h/2), b2Vec2(m_window_x/m_M_TO_PX - l/2,m_window_y/m_M_TO_PX - h/2) );
53 bottomEdgeFixtureDef.shape = &edgeShape;
54 m_groundBody->CreateFixture(&bottomEdgeFixtureDef);
56 b2FixtureDef leftEdgeFixtureDef;
57 edgeShape.Set( b2Vec2(l/2,h/2), b2Vec2(l/2,m_window_y/m_M_TO_PX - h/2) );
58 leftEdgeFixtureDef.shape = &edgeShape;
59 m_groundBody->CreateFixture(&leftEdgeFixtureDef);
61 b2FixtureDef rightEdgeFixtureDef;
62 edgeShape.Set( b2Vec2(m_window_x/m_M_TO_PX - l/2,m_window_y/m_M_TO_PX - h/2), b2Vec2(m_window_x/m_M_TO_PX - l/2,h/2) );
63 rightEdgeFixtureDef.shape = &edgeShape;
64 m_groundBody->CreateFixture(&rightEdgeFixtureDef);
70 float h = window.getSize().y - m_height*m_M_TO_PX;
71 float l = window.getSize().x - m_width*m_M_TO_PX;
73 sf::VertexArray lines(sf::LinesStrip, 5);
74 lines[0].position = sf::Vector2f(l/2, h/2);
75 lines[1].position = sf::Vector2f(l/2, window.getSize().y-h/2);
76 lines[2].position = sf::Vector2f(window.getSize().x-l/2, window.getSize().y-h/2);
77 lines[3].position = sf::Vector2f(window.getSize().x-l/2, h/2);
78 lines[4].position = sf::Vector2f(l/2, h/2);
80 lines[0].color = sf::Color::Black;
81 lines[1].color = sf::Color::Black;
82 lines[2].color = sf::Color::Black;
83 lines[3].color = sf::Color::Black;
84 lines[4].color = sf::Color::Black;
void drawBody(sf::RenderWindow &window)
void create(b2World *world, sf::RenderWindow &window, config::sTerrain terrainParam, int WINDOW_X_PX, double bodyLength=1)
void createBody(b2World *world)
virtual void create(b2World *world, sf::RenderWindow &window, config::sTerrain terrainParam, int WINDOW_X_PX, double bodyLength)