Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Nieścisłości w liczeniu przesunięcia kamery [sfml]

Ostatnio zmodyfikowano 2016-10-10 09:40
Autor Wiadomość
Saran
Temat założony przez niniejszego użytkownika
Nieścisłości w liczeniu przesunięcia kamery [sfml]
» 2016-10-07 21:54:55
C/C++
#include <SFML/Graphics.hpp>

int main()
{
    sf::View view;
    sf::RenderWindow window( sf::VideoMode( 800, 600, 32 ), "" );
    window.setVerticalSyncEnabled( 1 );
    window.setView( view );
   
    sf::CircleShape shape;
    shape.setRadius( 50 );
    shape.setFillColor( sf::Color::Blue );
    shape.setPointCount( 5 );
   
    sf::Vector2f start_m_pos = window.mapPixelToCoords( sf::Mouse::getPosition( window ) );
    sf::Vector2f last_m_pos = start_m_pos;
    bool movestart = 0, moveend = 1;
    while( window.isOpen() )
    {
        sf::Event zdarzenie;
        while( window.pollEvent( zdarzenie ) )
        {
            if( zdarzenie.type == sf::Event::Closed )
                 window.close();
           
            if( zdarzenie.type == sf::Event::MouseMoved && movestart )
            {
                start_m_pos = window.mapPixelToCoords( sf::Mouse::getPosition( window ) );
                if( start_m_pos != last_m_pos )
                {
                    view.move( 0 -( start_m_pos.x - last_m_pos.x ), 0 -( start_m_pos.y - last_m_pos.y ) );
                    last_m_pos = start_m_pos;
                }
            }
           
            if( sf::Mouse::isButtonPressed( sf::Mouse::Right ) && moveend )
            {
                moveend = 0;
                start_m_pos = window.mapPixelToCoords( sf::Mouse::getPosition( window ) );
                if( !movestart ) { movestart = 1; last_m_pos = start_m_pos; }
            }
           
            if( !sf::Mouse::isButtonPressed( sf::Mouse::Right ) && movestart ) { movestart = 0; moveend = 1; }
        }
        window.clear( sf::Color::White );
        window.setView( view );
        window.draw( shape );
        window.setView( window.getDefaultView() );
        window.display();
    }
    return 0;
}
Wie ktoś z czego może to wynikać? Pozycja kursora na mapie będzie różnić się od pozycji początkowej po przesunięciu.
P-152314
Saran
Temat założony przez niniejszego użytkownika
» 2016-10-10 09:40:54
Wynikało to z różnych rozdzielczości view i default view.
P-152383
« 1 »
  Strona 1 z 1