Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Box2D/Box2D.h>
- #include <SFML/Graphics.hpp>
- #include "CPlayer.h"
- #define DEGTORAD 0.0174532925199432957f
- #define RADTODEG 57.295779513082320876f
- #define PIXTOMET 50
- #define METTOPIX 0.02
- #include <iostream>
- using namespace std;
- int main(int argc, char** argv)
- {
- // Timer
- sf::Clock m_Clock;
- float m_dt, m_fullTime, m_VelocityFullTime;
- // Fenster öffnen
- sf::RenderWindow m_MainWindow;
- m_MainWindow.create(sf::VideoMode(1920, 1080), "Test Anwendung Box2D", sf::Style::Fullscreen);
- // Welt erstellen
- b2Vec2 m_Gravity(0.0f, 10.0f);
- b2World *m_World = new b2World(m_Gravity);
- // Sprite laden
- sf::Sprite m_Block;
- sf::Texture m_Block_Texture;
- sf::IntRect m_Block_Rect;
- m_Block_Texture.loadFromFile("Data/Graphics/block.png");
- m_Block_Rect.left = 0;
- m_Block_Rect.top = 0;
- m_Block_Rect.width = 64.0f;
- m_Block_Rect.height = 64.0f;
- m_Block.setTexture(m_Block_Texture);
- m_Block.setTextureRect(m_Block_Rect);
- m_Block.setOrigin(32.0f, 32.0f);
- // Body Template erstellen
- b2BodyDef m_dynamicBodyDef;
- m_dynamicBodyDef.type = b2_dynamicBody;
- m_dynamicBodyDef.position.Set(32 * PIXTOMET, 0 * PIXTOMET);
- // Body (Template1) erstellen
- b2Body *m_dynamicBody_1 = m_World->CreateBody(&m_dynamicBodyDef);
- m_dynamicBody_1->SetGravityScale(1);
- // Shape Template erstellen
- b2PolygonShape m_polygoneShape;
- m_polygoneShape.SetAsBox(1.28, 1.28);
- // Fixture Template erstellen
- b2FixtureDef m_fixtureDef;
- m_fixtureDef.shape = &m_polygoneShape;
- m_fixtureDef.density = 1;
- m_dynamicBody_1->CreateFixture(&m_fixtureDef);
- // EdgeBody Def
- b2BodyDef m_edgeBodyDef;
- m_edgeBodyDef.type = b2_staticBody;
- m_edgeBodyDef.position.Set(0, 0);
- b2Body *m_edgeBody = m_World->CreateBody(&m_edgeBodyDef);
- // Edge Shape
- b2EdgeShape m_EdgeShape;
- m_EdgeShape.Set(b2Vec2(20 * PIXTOMET, 1080 * PIXTOMET), b2Vec2((m_MainWindow.getSize().x - 20) * PIXTOMET, 1080 * PIXTOMET));
- // Fixture Template static erstellen
- b2FixtureDef m_edgeFixtureDef;
- m_edgeFixtureDef.shape = &m_EdgeShape;
- m_edgeBody->CreateFixture(&m_edgeFixtureDef);
- float32 timeStep = 1.0f / 60.0f;
- int32 velocityIterations = 6;
- int32 positionIterations = 2;
- m_Clock.restart();
- m_dt = 0;
- m_fullTime = 0;
- m_VelocityFullTime = 0;
- // Main Loop
- while (m_MainWindow.isOpen())
- {
- m_MainWindow.clear();
- // Events abfragen
- sf::Event m_Event;
- if (m_MainWindow.pollEvent(m_Event))
- {
- if (m_Event.type == sf::Event::Closed)
- return 0;
- }
- //cout << m_VelocityFullTime << endl;
- if (m_VelocityFullTime >= 0.016667f)
- {
- //cout << "triggerd" << endl;
- m_VelocityFullTime = 0;
- // World Step machen
- m_World->Step(timeStep, velocityIterations, positionIterations);
- }
- m_Block.setPosition(m_dynamicBody_1->GetPosition().x * METTOPIX, m_dynamicBody_1->GetPosition().y);
- m_Block.setRotation(m_dynamicBody_1->GetAngle() * RADTODEG);
- m_MainWindow.draw(m_Block);
- cout << m_dynamicBody_1->GetPosition().x * METTOPIX << endl << m_dynamicBody_1->GetPosition().y * METTOPIX << endl;
- // Alles anzeigen
- m_MainWindow.display();
- // dt setzten
- m_dt = m_Clock.restart().asSeconds();
- m_fullTime += m_dt;
- m_VelocityFullTime += m_dt;
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement