SpriteNode(const sf::Texture& t, sf::Vector2f pos) : mSprite(t) { sf::FloatRect bounds = mSprite.getLocalBounds(); mSprite.setOrigin(bounds.width / 2.f, bounds.height / 2.f); mSprite.setPosition(pos); };
int main() { sf::RenderWindow App(sf::VideoMode(imageWidth, imageHeight), "SFML Graphics",sf::Style::Fullscreen); // This is the SFML application initialization with the app's parameters cx[0] = 255; cx[1] = 0; cx[2] = 0; // The initial colors for the shifting kradius = 0.1; imagen.create(imageWidth,imageHeight); mandtex.create(imageWidth,imageHeight); // The scaling factor, defined by the ranges in Real and Imaginary axis, // divided by the respective axis real length. mandelb.setOrigin(imageWidth/2,imageHeight/2); mandelb.setPosition(640,400); mandelb.scale(1.5,1.5); // Set the image positioning, centering and scaling. k.real = 0; k.imag = 0; // Original K seed values. dir = false; // Direction of scan over the complex plane mandel = false; // false if painting Julia Set, true if Mandelbrot Set. draw = true; // To tell the application to pause or continue drawing, its switched by // pressing the right click. while (App.isOpen()) { sf::Event Event; while (App.pollEvent(Event)) { // SFML works with an event loop if (Event.type == sf::Event::Closed){ // If the window is closed, close the application App.close(); } if( Event.type == Event.MouseButtonReleased && Event.mouseButton.button == sf::Mouse::Left){ // If the left mouse is pressed and released, close the application App.close(); } if( Event.type == Event.MouseButtonReleased && Event.mouseButton.button == sf::Mouse::Right){ // If the right mouse is pressed and released, toggle randomness. draw = !draw; } } App.clear(); if(!draw) continue; // If false, then stop animating and freeze in the last generated frame. resolve(); //radialScan(); horizontalScan(); mandelb.setColor(sf::Color(cx[0], cx[1], cx[2])); // Shift the image hue. App.draw(mandelb); App.display(); } return EXIT_SUCCESS; }
virtual void init() { dt=0; select_switch = 0.2; if (!standard_font.loadFromFile("fonts/Unique.ttf")) { // error... } // darken = sf::RectangleShape(sf::Vector2f(800,400)); //sfx if (!buffer.loadFromFile("sfx/Blip 007.wav")) { //error } blip.setBuffer(buffer); if(!title.loadFromFile("gfx/title.png"))std::cout<<"Error"<<std::endl; t**s.setTexture(title); t**s.setOrigin(50,8); t**s.setScale(sf::Vector2f(3,3)); t**s.setPosition(400,100); sf::FloatRect tempt ; for(int i =0 ; i<4;i++) { selector[i].setFont(standard_font); selector[i].setCharacterSize(28); // dla centrowania obiektow tempt = selector[i].getGlobalBounds(); selector[i].setOrigin(sf::Vector2f(tempt.width/2,tempt.height/2)); selector[i].setPosition(350,150+30*i); } selector[0].setString("Start game"); selector[1].setString("Info"); selector[2].setString("Highscores"); selector[3].setString("Exit"); selector[0].setColor(sf::Color(0,127,127)); timer.restart(); };
Scenery(LevelBlock* host , const sf::Texture& texture) : mHostBlock(host) , mSprite(texture) { sf::FloatRect bounds = mSprite.getLocalBounds(); mSprite.setOrigin(bounds.width / 2.f, bounds.height / 2.f); mSprite.move(20.f, 20.f); };
//initialize muparser and graphics void init() { p.DefineVar("theta", &t); p.DefineConst("pi", pi); graph.create(size,size,sf::Color::Transparent); graphTx.loadFromImage(graph); graphSpr.setTexture(graphTx); //center on screen graphSpr.setOrigin(size/2,size/2); graphSpr.setPosition(windowsize.x/2, windowsize.y/2); }
void set_origin() { const float mult{0.27f}; assert(mult > 0.0f); const sf::FloatRect m_image_bounds{m_sprite.getLocalBounds()}; m_sprite.setOrigin(0.5f*m_image_bounds.width, 0.5f*m_image_bounds.height); m_radius = mult*(m_image_bounds.width + m_image_bounds.height); }
void Graphics::draw(sf::Vector2f position, sf::Vector2f hitbox, sf::Sprite sprite) { sprite.setOrigin(0, hitbox.y); sf::Vector2f roundedPosition = sf::Vector2f(position.x - 0.5, position.y - 0.5); //Translate position translatePosition(roundedPosition, window_); //Set Position sprite.setPosition(roundedPosition); //Scale if necessary sprite.scale(hitbox.x / sprite.getTextureRect().width, hitbox.y / sprite.getTextureRect().height); window_->draw(sprite); return; }
Entity(sf::Texture& sTexture, EntityType type, Collidable::Type colType, sf::SoundBuffer& soundBuf1, sf::SoundBuffer& soundBuf2) : Collidable(colType) , mSprite(sTexture) , mDeathSound(soundBuf1) , mLaserSound(soundBuf2) , mType(type) , mCollected(0) , mFireProjectile(false) , mFireCountdown(sf::Time::Zero) { sf::FloatRect bounds = mSprite.getLocalBounds(); mSprite.setOrigin(bounds.width / 2.f, bounds.height / 2.f); switch(type) { case EntityType::Player: mHitPoints = PlayerHitPoints; break; case EntityType::Enemy: mHitPoints = EnemyHitPoints; break; default: break; } mLaserSound.setVolume(75.f); mDeathSound.setVolume(75.f); };
Application() : m_window(sf::VideoMode(300, 300), "Flashlight!"), m_layer(), m_rect(sf::Vector2f(100.f, 100.f)), m_pos(0.f, 0.f) { m_window.setFramerateLimit(60); m_window.setMouseCursorVisible(false); m_layer.create(300, 300); m_flashlightTexture.create(60, 60); // We want to have semi-transparent edges. generateSpot(); m_flashlight.setTexture(m_flashlightTexture.getTexture(), true); m_flashlight.setPosition(150.f, 150.f); m_flashlight.setOrigin(30.f, 30.f); m_rect.setFillColor(sf::Color::Red); m_rect.setPosition(100.f, 100.f); m_sprite.setTexture(m_layer.getTexture()); }
inline void centerOrigin(sf::Sprite& sprite) { sf::FloatRect bounds = sprite.getLocalBounds(); sprite.setOrigin(std::floor(bounds.left + bounds.width / 2.f), std::floor(bounds.top + bounds.height / 2.f)); }
int main(int argc, char** argv) { sf::RenderWindow window(sf::VideoMode(1000, 1000), "Physics Game!"); delete world; CreateWorld(); int currentLevel = 1; #pragma region Background Graphics // Load the background images, create a sprite and assign the image. // Sky sf::Texture backgroundTexture; backgroundTexture.loadFromFile("assets/Sky.png"); backgroundTexture.setSmooth(true); backgroundTexture.setRepeated(true); sf::Sprite background; background.setPosition(0,0); background.setScale((float)window.getSize().x,1.0f); background.setTexture(backgroundTexture); // Sun sf::Texture sunTexture; sunTexture.loadFromFile("assets/Sun.png"); sunTexture.setSmooth(true); sunTexture.setRepeated(true); sf::Sprite sun; sun.setPosition((window.getSize().x - (250*0.6f)) - window.getSize().x * 0.1f , 100); sun.setScale(0.6f,0.6f); sun.setTexture(sunTexture); // Cloud sf::Texture cloud1Texture; cloud1Texture.loadFromFile("assets/Cloud1.png"); cloud1Texture.setSmooth(true); cloud1Texture.setRepeated(false); sf::Sprite cloud1; cloud1.setPosition(window.getSize().x*0.15f,80); cloud1.setScale(1.0f,1.0f); cloud1.setTexture(cloud1Texture); // Hills sf::Texture hillsTexture; hillsTexture.loadFromFile("assets/Hills.png"); hillsTexture.setSmooth(false); hillsTexture.setRepeated(true); sf::Sprite hills1; hills1.setPosition(0,(float)window.getSize().y - 184); hills1.setScale(1.0f ,1.0f); hills1.setTexture(hillsTexture); sf::Sprite hills2; hills2.setPosition(766,(float)window.getSize().y - 184); hills2.setScale(1.0f,1.0f); hills2.setTexture(hillsTexture); sf::Sprite hills3; hills3.setPosition(766*2,(float)window.getSize().y - 184); hills3.setScale(1.0f,1.0f); hills3.setTexture(hillsTexture); #pragma endregion // Prepare for simulation. Typically we use a time step of 1/60 of a // second (60Hz) and 10 iterations. This provides a high quality simulation // in most game scenarios. float32 timeStep = 1.0f / 30.0f; int32 velocityIterations = 8; int32 positionIterations = 3; std::vector<shape> lines; sf::Texture wheel; wheel.loadFromFile("assets/Wheel.png"); wheel.setSmooth(true); sf::Texture bikeWheel; bikeWheel.loadFromFile("assets/BikeWheel.png"); bikeWheel.setSmooth(true); sf::Texture bikeFrame_t; bikeFrame_t.loadFromFile("assets/BikeFrame.png"); bikeFrame_t.setSmooth(true); #pragma region events while (window.isOpen()) { static sf::Clock deltaClock; sf::Time deltaTime = deltaClock.restart(); static float time; time += deltaTime.asSeconds() * 5; sf::Event event; while (window.pollEvent(event)) { // If the window is closed, close the SFML window switch (event.type) { case sf::Event::Closed: window.close(); break; // Resize window : set new size case sf::Event::Resized: window.setView(sf::View(sf::FloatRect(0.0f, 0.0f, (float)event.size.width, (float)event.size.height))); // Rescale and Reposition the background elements background.setScale((float)window.getSize().x,1.0f); sun.setPosition((window.getSize().x - (250*0.6f)) - window.getSize().x * 0.1f , 100); hills1.setPosition(0,(float)window.getSize().y - 184); hills2.setPosition(766,(float)window.getSize().y - 184); hills3.setPosition(766*2,(float)window.getSize().y - 184); break; case sf::Event::MouseButtonPressed: static bool pressed = false; static vector2 start,end; // When we click save the positions to a Vector2 if(event.mouseButton.button == sf::Mouse::Left) { //printf("%f - %f\n", (float)event.mouseButton.x, (float)event.mouseButton.y); // If we are drawing lines constantly, dont perform click drawing if(!pressed) { start.x = (float)event.mouseButton.x; start.y = (float)event.mouseButton.y; pressed = true; } else { end.x = (float)event.mouseButton.x; end.y = (float)event.mouseButton.y; if(start == end) { pressed = false; break; } // Create the SFML visual box based on click locations shape sf_shape = shape(start,end, 2); lines.push_back(sf_shape); vector2 center = center.GetCenter(start, end); // Create the Box2D physics box. static b2FixtureDef myFixture; static b2BodyDef myBody; myBody.type = b2_staticBody; myBody.position.Set(center.x, center.y); b2Body* body = world->CreateBody(&myBody); b2Vec2 vertices[4]; // Caluclate the positions of the Box2D Verts sf_shape.Box2DVertPos(); vertices[0].Set(sf_shape.a.x * SCALE -start.x*0.5f, sf_shape.a.y * SCALE -start.y*0.5f); vertices[3].Set(sf_shape.b.x * SCALE -start.x*0.5f, sf_shape.b.y * SCALE -start.y*0.5f); vertices[2].Set(sf_shape.c.x * SCALE -start.x*0.5f, sf_shape.c.y * SCALE -start.y*0.5f); vertices[1].Set(sf_shape.d.x * SCALE -start.x*0.5f, sf_shape.d.y * SCALE -start.y*0.5f); b2PolygonShape polyShape; polyShape.Set(vertices, 4); myFixture.shape = &polyShape; myFixture.density = 1; myFixture.friction = 1; body->CreateFixture(&myFixture); pressed = false; } } } } #pragma endregion if(currentLevel == 2) l1.Update(); #pragma region Keyboard_Input__Reset // RESET ALL if (sf::Keyboard::isKeyPressed(sf::Keyboard::Escape)) { // Clear all SFML Lines lines.clear(); // Pause the game paused = true; // Reset the World delete world; LevelLoad(currentLevel); } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::R)) { // Reset the Level delete world; LevelLoad(currentLevel); // Recreate the physics on all the lines RecreateLines(lines); int x = 9; // Pause the game paused = true; } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Num1)) { // Clear all SFML Lines lines.clear(); // Pause the game paused = true; // Reset the World delete world; LevelLoad(1); currentLevel = 1; } else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Num2)) { // Clear all SFML Lines lines.clear(); // Pause the game paused = true; // Reset the World delete world; LevelLoad(2); currentLevel = 2; } #pragma endregion #pragma region Pause static bool toggle = false; if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space)) { if(!toggle) { paused = !paused; toggle = true; } } else { toggle = false; } #pragma endregion if(time > 0.016f) { if(!paused) world->Step(time, velocityIterations, positionIterations); time = 0; } window.clear(); #pragma region BackgroundArt window.draw(background); window.draw(sun); window.draw(cloud1); window.draw(hills1); window.draw(hills2); window.draw(hills3); #pragma endregion #pragma region DrawSFML size_t size = 0; sf::ConvexShape cShape; cShape.setFillColor(sf::Color::Red); //This loops through every single body in the game world for(b2Body* b = world->GetBodyList(); b; b = b->GetNext()) { //This loops through every fixture in the current body for(b2Fixture* f = b->GetFixtureList(); f; f = f->GetNext()) { //This checks to see if the type of the fixture is a polygon, if it is then draw the polygon if(f->GetType() == b2Shape::e_polygon && currentLevel != 2) { // Create the convex shape static sf::ConvexShape cShape; cShape.setFillColor(sf::Color::Red); //Stores a pointer to the shape stored in the fixture b2PolygonShape* s = (b2PolygonShape*)f->GetShape(); //Get the amount of vertices stored in the shape size = s->GetVertexCount(); //Set the size of the object in SFML so it knows how many vertices the shape should have cShape.setPointCount(size); //Loop through the vertices and send them from Box2D to the SFML shape for(int i = 0; i < size; i++) { //Stores the current vertex in v b2Vec2 v = s->GetVertex(i); //Converts the vertex from its local space to where it is in the world cShape.setPoint(i, sf::Vector2f((b->GetWorldVector(v).x + b->GetPosition().x), (b->GetWorldVector(v).y + b->GetPosition().y))); } //Draws the shape onto the window window.draw(cShape); } else if ((f->GetType() == b2Shape::e_polygon && b->GetType() == b2_dynamicBody)) { static sf::Sprite bikeFrame; bikeFrame.setTexture(bikeFrame_t); bikeFrame.setPosition(f->GetBody()->GetPosition().x, f->GetBody()->GetPosition().y); bikeFrame.setScale(0.5f,0.5f); bikeFrame.setRotation(b->GetAngle() * 57.2957795f); bikeFrame.setOrigin(0,0); window.draw(bikeFrame); } else if (f->GetType() == b2CircleShape::e_circle) { // // Create A cricle to be drawn // static sf::CircleShape circle; // circle.setFillColor(sf::Color::Green); // //Stores a pointer to the shape stored in the fixture // b2PolygonShape* s = (b2PolygonShape*)f->GetShape(); // // Calculate the radius for the SFML circle // circle.setRadius(s->m_radius); // circle.setPosition(f->GetBody()->GetPosition().x - circle.getRadius(), f->GetBody()->GetPosition().y - circle.getRadius()); // window.draw(circle); b2PolygonShape* s = (b2PolygonShape*)f->GetShape(); static sf::Sprite sWheel; sWheel.setScale((s->m_radius*0.01)*2,(s->m_radius*0.01)*2); sWheel.setPosition (f->GetBody()->GetPosition().x, f->GetBody()->GetPosition().y); if(currentLevel == 1) sWheel.setTexture(wheel); if(currentLevel == 2) sWheel.setTexture(bikeWheel); sWheel.setOrigin(50,50); sWheel.setRotation(b->GetAngle() * 57.2957795f); window.draw(sWheel); } } } #pragma endregion #pragma region DrawClickedLines // draw all elements in line vector for(int i = 0; i != lines.size(); ++i) { static sf::VertexArray quad(sf::Quads, 4); quad[0].position = sf::Vector2f(lines[i].a.x, lines[i].a.y); quad[1].position = sf::Vector2f(lines[i].b.x, lines[i].b.y); quad[2].position = sf::Vector2f(lines[i].c.x, lines[i].c.y); quad[3].position = sf::Vector2f(lines[i].d.x, lines[i].d.y); for(int j = 0; j != quad.getVertexCount(); ++j) quad[j].color = sf::Color::Green; window.draw(quad); // Create shadows under all the lines static sf::VertexArray shadow(sf::Quads, 4); shadow[0].position = sf::Vector2f(lines[i].a.x, lines[i].a.y); shadow[1].position = sf::Vector2f(lines[i].b.x, lines[i].b.y); shadow[2].position = sf::Vector2f(lines[i].c.x, lines[i].c.y+80); shadow[3].position = sf::Vector2f(lines[i].d.x, lines[i].d.y+80); shadow[0].color = sf::Color::Color(0,0,0,80); shadow[1].color = sf::Color::Color(0,0,0,80); shadow[2].color = sf::Color::Color(0,0,0,0); shadow[3].color = sf::Color::Color(0,0,0,0); window.draw(shadow); } #pragma endregion #pragma region Play/Pause // Change the play and pause Icon on screen based on state if(!paused) { static sf::VertexArray play(sf::Triangles, 3); vector2 location(10,10); play[0].position = sf::Vector2f(0 +location.x, 0 +location.y); play[1].position = sf::Vector2f(20 +location.x, 15 +location.y); play[2].position = sf::Vector2f(0 +location.x, 30 +location.y); play[0].color = sf::Color::Green; play[1].color = sf::Color::Green; play[2].color = sf::Color::Green; window.draw(play); } else { static sf::VertexArray pause1(sf::Quads, 4); static sf::VertexArray pause2(sf::Quads, 4); vector2 location(10,10); pause1[0].position = sf::Vector2f(0 +location.x, 0 +location.y); pause1[1].position = sf::Vector2f(5 +location.x, 0 +location.y); pause1[2].position = sf::Vector2f(5 +location.x, 30 +location.y); pause1[3].position = sf::Vector2f(0 +location.x, 30 +location.y); pause1[0].color = sf::Color::Blue; pause1[1].color = sf::Color::Blue; pause1[2].color = sf::Color::Blue; pause1[3].color = sf::Color::Blue; pause2[0].position = sf::Vector2f(10 +location.x, 0 +location.y); pause2[1].position = sf::Vector2f(15 +location.x, 0 +location.y); pause2[2].position = sf::Vector2f(15 +location.x, 30 +location.y); pause2[3].position = sf::Vector2f(10 +location.x, 30 +location.y); pause2[0].color = sf::Color::Blue; pause2[1].color = sf::Color::Blue; pause2[2].color = sf::Color::Blue; pause2[3].color = sf::Color::Blue; window.draw(pause1); window.draw(pause2); } #pragma endregion window.display(); } return 0; }
void CenterSpriteHor(sf::Sprite& sprite, const sf::RenderTarget& target) { sf::FloatRect sprite_bounds = sprite.getLocalBounds(); sprite.setOrigin(sprite_bounds.left + (sprite_bounds.width/2.f), 0); sprite.setPosition(target.getSize().x/2.f, sprite.getPosition().y); }
void MameUIsenWindow::centerElement(sf::Sprite& sprite) { sf::FloatRect fr = sprite.getLocalBounds(); sprite.setOrigin(fr.left + fr.width/2.0f, fr.top + fr.height/2.0f); }
Player () { PlayerNumber = totalPlayers; Sprite = loadSpriteData("Player " + intToString(PlayerNumber + 1)); //Get Global width, seperate to rotation CharacterWidth = Sprite.getGlobalBounds().width; nameSpacing = 30; healthBarSpacing = nameSpacing + 15; Sprite.setOrigin(Sprite.getGlobalBounds().width/2, Sprite.getGlobalBounds().height/2); Sprite.setPosition((App.getSize().x/2) - (Sprite.getGlobalBounds().width/2), (App.getSize().y/2) - (Sprite.getGlobalBounds().height/2)); //PlayerName.setFont(sf::Font::getDefaultFont()); PlayerName.setCharacterSize(15); PlayerName.setString("Player: " + intToString(PlayerNumber + 1)); PlayerName.setOrigin(PlayerName.getGlobalBounds().width/2, PlayerName.getGlobalBounds().height/2); PlayerName.setPosition(Sprite.getPosition().x, Sprite.getPosition().y + nameSpacing); NameOutline.setSize(sf::Vector2f(PlayerName.getGlobalBounds().width, PlayerName.getGlobalBounds().height)); NameOutline.setOutlineThickness(2); NameOutline.setFillColor(sf::Color(0, 0, 0, 120)); NameOutline.setOutlineColor(sf::Color::Black); NameOutline.setOrigin(NameOutline.getGlobalBounds().width/2, NameOutline.getGlobalBounds().height/2); NameOutline.setPosition(Sprite.getPosition().x + 1.5, Sprite.getPosition().y + nameSpacing + 4); MaxHealth = Health = 100; HealthBarSize = 50; HealthBarRed.setSize(sf::Vector2f(HealthBarSize, 5)); HealthBarRed.setOutlineThickness(1); HealthBarRed.setFillColor(sf::Color::Red); HealthBarRed.setOutlineColor(sf::Color::Black); HealthBarRed.setPosition(Sprite.getPosition().x - (CharacterWidth/2) - 5, Sprite.getPosition().y + healthBarSpacing); HealthBarGreen.setSize(sf::Vector2f(HealthBarSize, 5)); HealthBarGreen.setOutlineThickness(1); HealthBarGreen.setFillColor(sf::Color::Green); HealthBarGreen.setOutlineColor(sf::Color::Black); HealthBarGreen.setPosition(Sprite.getPosition().x - (CharacterWidth/2) - 5, Sprite.getPosition().y + healthBarSpacing); if (controllerConnected) { ControlScheme = ControlSchemes::Joystick; Key k; k.InputType = Input::JoystickMovedNeg; k.KeyCode = sf::Joystick::Axis::Y; Bindings["Up"] = k; k.InputType = Input::JoystickMovedPos; k.KeyCode = sf::Joystick::Axis::Y; Bindings["Down"] = k; k.InputType = Input::JoystickMovedNeg; k.KeyCode = sf::Joystick::Axis::X; Bindings["Left"] = k; k.InputType = Input::JoystickMovedPos; k.KeyCode = sf::Joystick::Axis::X; Bindings["Right"] = k; } else { ControlScheme = ControlSchemes::KeyboardMouse; Key k; k.InputType = Input::KeyboardInput; k.KeyCode = sf::Keyboard::W; Bindings["Up"] = k; k.InputType = Input::KeyboardInput; k.KeyCode = sf::Keyboard::S; Bindings["Down"] = k; k.InputType = Input::KeyboardInput; k.KeyCode = sf::Keyboard::A; Bindings["Left"] = k; k.InputType = Input::KeyboardInput; k.KeyCode = sf::Keyboard::D; Bindings["Right"] = k; } totalPlayers++; }
void Unit::setOrigin(float x, float y) { if(_isLoaded) { _sprite.setOrigin(x, y); } }
void centerOrigin(sf::Sprite& sprite) { sf::FloatRect bounds = sprite.getLocalBounds(); sprite.setOrigin(bounds.left + bounds.width / 2.f, bounds.top + bounds.height / 2.f); }
void CenterSpriteVert(sf::Sprite& sprite, const sf::RenderTarget& target) { sf::FloatRect sprite_bounds = sprite.getLocalBounds(); sprite.setOrigin(0, sprite_bounds.top + (sprite_bounds.height/2.f)); sprite.setPosition(sprite.getPosition().x, target.getSize().y/2.f); }
void CenterSprite(sf::Sprite& sprite, const sf::RenderTarget& target) { sf::FloatRect sprite_bounds = sprite.getLocalBounds(); sprite.setOrigin(sprite_bounds.left + (sprite_bounds.width/2.0f), sprite_bounds.top + (sprite_bounds.height/2.0f)); sprite.setPosition(sf::Vector2f(target.getSize() / (unsigned)2)); }