Example #1
0
bool peripheralsInputTick(void) {
	static SDL_Event e;
	while(SDL_PollEvent(&e) != 0) {
		switch(e.type) {
		case SDL_WINDOWEVENT:
			handleWindowEvent(e.window);
			break;
		case SDL_KEYDOWN:
			if(hasFocus)
				;
			break;
		case SDL_MOUSEMOTION:
			if(hasMouse)
				;
			break;
		case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP:
			if(hasMouse)
				;
			break;
		case SDL_MOUSEWHEEL: // treat mouse wheel as up/down arrow keys
			if(hasMouse)
				;
			break;
		case SDL_QUIT:
			shouldQuit = true;
			break;
		}
	}
	return !shouldQuit;
}
Example #2
0
int main()
{
    sf::RenderWindow renderWindow(sf::VideoMode(800u, 600u), "TMX Loader");
    sf::Font font = loadFont();
    sf::Text fpsText = getFpsText(font);

	//set the debugging output mode
	tmx::setLogLevel(tmx::Logger::Info | tmx::Logger::Error);

    //create map loader and load map
    tmx::MapLoader ml("maps/");
    ml.load("desert.tmx");

    sf::Clock deltaClock, frameClock;

    const float dt = 0.01f;

    float previousUpdateTime = deltaClock.getElapsedTime().asSeconds();
    float accumulator = 0.f;

    while(renderWindow.isOpen())
    {
        handleWindowEvent(renderWindow);

        //update
        float currentTime = deltaClock.getElapsedTime().asSeconds();
        float frameTime = currentTime - previousUpdateTime;
        previousUpdateTime = currentTime;
        accumulator += frameTime;

        sf::Vector2f movement;
        while ( accumulator >= dt )
        {
            movement = getViewMovement(dt);
            accumulator -= dt;
        }

        //allow moving of view
        sf::View view = renderWindow.getView();
        view.move(movement);
        renderWindow.setView(view);

        //show fps
        float fpsCount = (1.f / frameClock.restart().asSeconds());
        fpsText.setString( "FPS: " + (std::to_string(fpsCount)));
        fpsText.move(movement);

        //draw
        renderWindow.clear();
        renderWindow.draw(ml);
        renderWindow.draw(fpsText);
        renderWindow.display();
    }

    return 0;
}
Example #3
0
    void InputWrapper::capture()
    {
        SDL_Event evt;
        while(SDL_PollEvent(&evt))
        {
            switch(evt.type)
            {
                case SDL_MOUSEMOTION:
                    //ignore this if it happened due to a warp
                    if(!_handleWarpMotion(evt.motion))
                    {
                        mMouseListener->mouseMoved(_packageMouseMotion(evt));

                        //try to keep the mouse inside the window
                        _wrapMousePointer(evt.motion);
                    }
                    break;
                case SDL_MOUSEWHEEL:
                    mMouseListener->mouseMoved(_packageMouseMotion(evt));
                    break;
                case SDL_MOUSEBUTTONDOWN:
                    mMouseListener->mousePressed(evt.button, evt.button.button);
                    break;
                case SDL_MOUSEBUTTONUP:
                    mMouseListener->mouseReleased(evt.button, evt.button.button);
                    break;
                case SDL_KEYDOWN:
                    if (!evt.key.repeat)
                        mKeyboardListener->keyPressed(evt.key);
                    break;
                case SDL_KEYUP:
                    if (!evt.key.repeat)
                        mKeyboardListener->keyReleased(evt.key);
                    break;
                case SDL_TEXTINPUT:
                    mKeyboardListener->textInput(evt.text);
                    break;
                case SDL_WINDOWEVENT:
                    handleWindowEvent(evt);
                    break;
                case SDL_QUIT:
                    Ogre::Root::getSingleton().queueEndRendering();
                    break;
                default:
                    std::cerr << "Unhandled SDL event of type " << evt.type << std::endl;
                    break;
            }
        }
    }
Example #4
0
void SDLWindow::handlePollEvent() {
    while (SDL_PollEvent(&m_sdlEvent)) {
        switch (m_sdlEvent.type) {
            case SDL_WINDOWEVENT: {
                handleWindowEvent();
            } break;
            case SDL_KEYUP: {
                handleKeyUpEvent();
            } break;
            case SDL_KEYDOWN: {
                handleKeyDownEvent();
            } break;
            case SDL_QUIT: {
                onClose();
            } break;
        }
    }
}
Example #5
0
void MacOSXLoop::run()
{
    // Main event loop
    while( !m_exit )
    {
        EventRef pEvent;
        OSStatus err = ReceiveNextEvent( 0, NULL, kEventDurationForever, true,
                                         &pEvent );
        if( err != noErr )
        {
            // Get the event type
            UInt32 evClass = GetEventClass( pEvent );

            switch( evClass )
            {
            case kEventClassMouse:
            {
                break;
            }

            case kEventClassKeyboard:
            {
                break;
            }

            case kEventClassWindow:
            {
                handleWindowEvent( pEvent );
                break;
            }

            default:
            {
                EventTargetRef pTarget;
                pTarget = GetEventDispatcherTarget();
                SendEventToEventTarget( pEvent, pTarget );
                ReleaseEvent( pEvent );
            }
            }
        }
    }
}
Example #6
0
//////////////////////////////////////////////////////////////////////////
// handleEvent
void OsClientHTML5::handleEvent( const SDL_Event& SDLEvent )
{
	switch( SDLEvent.type )
	{
	case SDL_KEYDOWN:
	case SDL_KEYUP:
		handleKeyEvent( SDLEvent );
		break;

	case SDL_MOUSEBUTTONDOWN:
	case SDL_MOUSEBUTTONUP:
	case SDL_MOUSEMOTION:
		handleMouseEvent( SDLEvent );
		break;
	
	case SDL_WINDOWEVENT:
		handleWindowEvent( SDLEvent );
		break;
	}
}
static pascal OSStatus eventHandler(EventHandlerCallRef nextHandler, EventRef event, void *userData)
{
    ::UInt32 eventClass = GetEventClass(event);
    switch (eventClass)
    {
    // Mouse events
    case kEventClassMouse:
        return handleMouseEvent(nextHandler, event, userData);

    // Key press events
    case kEventClassTextInput:
        return handleKeyEvent(nextHandler, event, userData);

    // Window events
    case kEventClassWindow:
        return handleWindowEvent(nextHandler, event, userData);

    default:
        return eventNotHandledErr;
    }
}
Example #8
0
    void InputWrapper::capture(bool windowEventsOnly)
    {
        mViewer->getEventQueue()->frame(0.f);

        SDL_PumpEvents();

        SDL_Event evt;

        if (windowEventsOnly)
        {
            // During loading, just handle window events, and keep others for later
            while (SDL_PeepEvents(&evt, 1, SDL_GETEVENT, SDL_WINDOWEVENT, SDL_WINDOWEVENT))
                handleWindowEvent(evt);
            return;
        }

        while(SDL_PollEvent(&evt))
        {
            switch(evt.type)
            {
                case SDL_MOUSEMOTION:
                    // Ignore this if it happened due to a warp
                    if(!_handleWarpMotion(evt.motion))
                    {
                        // If in relative mode, don't trigger events unless window has focus
                        if (!mWantRelative || mWindowHasFocus)
                            mMouseListener->mouseMoved(_packageMouseMotion(evt));

                        // Try to keep the mouse inside the window
                        if (mWindowHasFocus)
                            _wrapMousePointer(evt.motion);
                    }
                    break;
                case SDL_MOUSEWHEEL:
                    mMouseListener->mouseMoved(_packageMouseMotion(evt));
                    break;
                case SDL_MOUSEBUTTONDOWN:
                    mMouseListener->mousePressed(evt.button, evt.button.button);
                    break;
                case SDL_MOUSEBUTTONUP:
                    mMouseListener->mouseReleased(evt.button, evt.button.button);
                    break;
                case SDL_KEYDOWN:
                    mKeyboardListener->keyPressed(evt.key);

                    if (!isModifierHeld(KMOD_ALT) && evt.key.keysym.sym >= SDLK_F1 && evt.key.keysym.sym <= SDLK_F12)
                    {
                        mViewer->getEventQueue()->keyPress(osgGA::GUIEventAdapter::KEY_F1 + (evt.key.keysym.sym - SDLK_F1));
                    }

                    break;
                case SDL_KEYUP:
                    if (!evt.key.repeat)
                    {
                        mKeyboardListener->keyReleased(evt.key);

                        if (!isModifierHeld(KMOD_ALT) && evt.key.keysym.sym >= SDLK_F1 && evt.key.keysym.sym <= SDLK_F12)
                            mViewer->getEventQueue()->keyRelease(osgGA::GUIEventAdapter::KEY_F1 + (evt.key.keysym.sym - SDLK_F1));
                    }

                    break;
                case SDL_TEXTEDITING:
                    break;
                case SDL_TEXTINPUT:
                    mKeyboardListener->textInput(evt.text);
                    break;

#if SDL_VERSION_ATLEAST(2, 0, 4)
                case SDL_KEYMAPCHANGED:
                    break;
#endif
                case SDL_JOYHATMOTION: //As we manage everything with GameController, don't even bother with these.
                case SDL_JOYAXISMOTION:
                case SDL_JOYBUTTONDOWN:
                case SDL_JOYBUTTONUP:
                case SDL_JOYDEVICEADDED:
                case SDL_JOYDEVICEREMOVED:
                    break;
                case SDL_CONTROLLERDEVICEADDED:
                    if(mConListener)
                        mConListener->controllerAdded(1, evt.cdevice); //We only support one joystick, so give everything a generic deviceID
                    break;
                case SDL_CONTROLLERDEVICEREMOVED:
                    if(mConListener)
                        mConListener->controllerRemoved(evt.cdevice);
                    break;
                case SDL_CONTROLLERBUTTONDOWN:
                    if(mConListener)
                        mConListener->buttonPressed(1, evt.cbutton);
                    break;
                case SDL_CONTROLLERBUTTONUP:
                    if(mConListener)
                        mConListener->buttonReleased(1, evt.cbutton);
                    break;
                case SDL_CONTROLLERAXISMOTION:
                    if(mConListener)
                        mConListener->axisMoved(1, evt.caxis);
                    break;
                case SDL_WINDOWEVENT:
                    handleWindowEvent(evt);
                    break;
                case SDL_QUIT:
                    if (mWindowListener)
                        mWindowListener->windowClosed();
                    break;
                case SDL_CLIPBOARDUPDATE:
                    break; // We don't need this event, clipboard is retrieved on demand

                case SDL_FINGERDOWN:
                case SDL_FINGERUP:
                case SDL_FINGERMOTION:
                case SDL_DOLLARGESTURE:
                case SDL_DOLLARRECORD:
                case SDL_MULTIGESTURE:
                    // No use for touch & gesture events
                    break;

                default:
                    Log(Debug::Info) << "Unhandled SDL event of type 0x" << std::hex << evt.type;
                    break;
            }
        }
    }
Example #9
0
    //-----------------------------------------------------------------------------------
    void SdlInputHandler::_handleSdlEvents( const SDL_Event& evt )
    {
        switch( evt.type )
        {
            case SDL_MOUSEMOTION:
                // Ignore this if it happened due to a warp
                if( !handleWarpMotion(evt.motion) )
                {
                    // If in relative mode, don't trigger events unless window has focus
                    if( (!mWantRelative || mWindowHasFocus) && mMouseListener )
                        mMouseListener->mouseMoved( evt );

                    // Try to keep the mouse inside the window
                    if (mWindowHasFocus)
                        wrapMousePointer( evt.motion );

                    if( mLogicSystem )
                        mGraphicsSystem->queueSendMessage( mLogicSystem, Mq::SDL_EVENT, evt );
                }
                break;
            case SDL_MOUSEWHEEL:
                {
                    if( mMouseListener )
                        mMouseListener->mouseMoved( evt );

                    if( mLogicSystem )
                        mGraphicsSystem->queueSendMessage( mLogicSystem, Mq::SDL_EVENT, evt );
                }
                break;
            case SDL_MOUSEBUTTONDOWN:
                {
                    if( mMouseListener )
                        mMouseListener->mousePressed( evt.button, evt.button.button );

                    if( mLogicSystem )
                        mGraphicsSystem->queueSendMessage( mLogicSystem, Mq::SDL_EVENT, evt );
                }
                break;
            case SDL_MOUSEBUTTONUP:
                {
                    if( mMouseListener )
                        mMouseListener->mouseReleased( evt.button, evt.button.button );

                    if( mLogicSystem )
                        mGraphicsSystem->queueSendMessage( mLogicSystem, Mq::SDL_EVENT, evt );
                }
                break;
            case SDL_KEYDOWN:
                {
                    if( !evt.key.repeat && mKeyboardListener )
                        mKeyboardListener->keyPressed( evt.key );

                    if( mLogicSystem )
                        mGraphicsSystem->queueSendMessage( mLogicSystem, Mq::SDL_EVENT, evt );
                }
                break;
            case SDL_KEYUP:
                {
                    if( !evt.key.repeat && mKeyboardListener )
                        mKeyboardListener->keyReleased( evt.key );

                    if( mLogicSystem )
                        mGraphicsSystem->queueSendMessage( mLogicSystem, Mq::SDL_EVENT, evt );
                }
                break;
            case SDL_TEXTINPUT:
                {
                    if( mKeyboardListener )
                        mKeyboardListener->textInput( evt.text );

                    if( mLogicSystem )
                        mGraphicsSystem->queueSendMessage( mLogicSystem, Mq::SDL_EVENT, evt );
                }
                break;
            case SDL_JOYAXISMOTION:
                {
                    if( mJoystickListener )
                        mJoystickListener->joyAxisMoved( evt.jaxis, evt.jaxis.axis );

                    if( mLogicSystem )
                        mGraphicsSystem->queueSendMessage( mLogicSystem, Mq::SDL_EVENT, evt );
                }
                break;
            case SDL_JOYBUTTONDOWN:
                {
                    if( mJoystickListener )
                        mJoystickListener->joyButtonPressed( evt.jbutton, evt.jbutton.button );

                    if( mLogicSystem )
                        mGraphicsSystem->queueSendMessage( mLogicSystem, Mq::SDL_EVENT, evt );
                }
                break;
            case SDL_JOYBUTTONUP:
                {
                    if( mJoystickListener )
                        mJoystickListener->joyButtonReleased( evt.jbutton, evt.jbutton.button );

                    if( mLogicSystem )
                        mGraphicsSystem->queueSendMessage( mLogicSystem, Mq::SDL_EVENT, evt );
                }
                break;
            case SDL_JOYDEVICEADDED:
                //SDL_JoystickOpen(evt.jdevice.which);
                //std::cout << "Detected a new joystick: " << SDL_JoystickNameForIndex(evt.jdevice.which) << std::endl;
                break;
            case SDL_JOYDEVICEREMOVED:
                //std::cout << "A joystick has been removed" << std::endl;
                break;
            case SDL_WINDOWEVENT:
                handleWindowEvent(evt);
                break;
            /*default:
                std::cerr << "Unhandled SDL event of type " << evt.type << std::endl;
                break;*/
        }
    }
Example #10
0
    void InputWrapper::capture(bool windowEventsOnly)
    {
        SDL_PumpEvents();

        SDL_Event evt;

        if (windowEventsOnly)
        {
            // During loading, just handle window events, and keep others for later
            while (SDL_PeepEvents(&evt, 1, SDL_GETEVENT, SDL_WINDOWEVENT, SDL_WINDOWEVENT))
                handleWindowEvent(evt);
            return;
        }

        while(SDL_PollEvent(&evt))
        {
            switch(evt.type)
            {
                case SDL_MOUSEMOTION:
                    // Ignore this if it happened due to a warp
                    if(!_handleWarpMotion(evt.motion))
                    {
                        // If in relative mode, don't trigger events unless window has focus
                        if (!mWantRelative || mWindowHasFocus)
                            mMouseListener->mouseMoved(_packageMouseMotion(evt));

                        // Try to keep the mouse inside the window
                        if (mWindowHasFocus)
                            _wrapMousePointer(evt.motion);
                    }
                    break;
                case SDL_MOUSEWHEEL:
                    mMouseListener->mouseMoved(_packageMouseMotion(evt));
                    break;
                case SDL_MOUSEBUTTONDOWN:
                    mMouseListener->mousePressed(evt.button, evt.button.button);
                    break;
                case SDL_MOUSEBUTTONUP:
                    mMouseListener->mouseReleased(evt.button, evt.button.button);
                    break;
                case SDL_KEYDOWN:
                    if (!evt.key.repeat)
                        mKeyboardListener->keyPressed(evt.key);
                    break;
                case SDL_KEYUP:
                    if (!evt.key.repeat)
                        mKeyboardListener->keyReleased(evt.key);
                    break;
                case SDL_TEXTINPUT:
                    mKeyboardListener->textInput(evt.text);
                    break;
                case SDL_JOYAXISMOTION:
                    if (mJoyListener)
                        mJoyListener->axisMoved(evt.jaxis, evt.jaxis.axis);
                    break;
                case SDL_JOYBUTTONDOWN:
                    if (mJoyListener)
                        mJoyListener->buttonPressed(evt.jbutton, evt.jbutton.button);
                    break;
                case SDL_JOYBUTTONUP:
                    if (mJoyListener)
                        mJoyListener->buttonReleased(evt.jbutton, evt.jbutton.button);
                    break;
                case SDL_JOYDEVICEADDED:
                    //SDL_JoystickOpen(evt.jdevice.which);
                    //std::cout << "Detected a new joystick: " << SDL_JoystickNameForIndex(evt.jdevice.which) << std::endl;
                    break;
                case SDL_JOYDEVICEREMOVED:
                    //std::cout << "A joystick has been removed" << std::endl;
                    break;
                case SDL_WINDOWEVENT:
                    handleWindowEvent(evt);
                    break;
                case SDL_QUIT:
                    if (mWindowListener)
                        mWindowListener->windowClosed();
                    break;
                default:
                    std::cerr << "Unhandled SDL event of type " << evt.type << std::endl;
                    break;
            }
        }
    }
Example #11
0
    void InputWrapper::capture(bool windowEventsOnly)
    {
        SDL_PumpEvents();

        SDL_Event evt;

        if (windowEventsOnly)
        {
            // During loading, just handle window events, and keep others for later
            while (SDL_PeepEvents(&evt, 1, SDL_GETEVENT, SDL_WINDOWEVENT, SDL_WINDOWEVENT))
                handleWindowEvent(evt);
            return;
        }

        while(SDL_PollEvent(&evt))
        {
            switch(evt.type)
            {
                case SDL_MOUSEMOTION:
                    // Ignore this if it happened due to a warp
                    if(!_handleWarpMotion(evt.motion))
                    {
                        // If in relative mode, don't trigger events unless window has focus
                        if (!mWantRelative || mWindowHasFocus)
                            mMouseListener->mouseMoved(_packageMouseMotion(evt));

                        // Try to keep the mouse inside the window
                        if (mWindowHasFocus)
                            _wrapMousePointer(evt.motion);
                    }
                    break;
                case SDL_MOUSEWHEEL:
                    mMouseListener->mouseMoved(_packageMouseMotion(evt));
                    break;
                case SDL_MOUSEBUTTONDOWN:
                    mMouseListener->mousePressed(evt.button, evt.button.button);
                    break;
                case SDL_MOUSEBUTTONUP:
                    mMouseListener->mouseReleased(evt.button, evt.button.button);
                    break;
                case SDL_KEYDOWN:
                    if (!evt.key.repeat)
                        mKeyboardListener->keyPressed(evt.key);
                    break;
                case SDL_KEYUP:
                    if (!evt.key.repeat)
                        mKeyboardListener->keyReleased(evt.key);
                    break;
                case SDL_TEXTINPUT:
                    mKeyboardListener->textInput(evt.text);
                    break;
                case SDL_JOYHATMOTION: //As we manage everything with GameController, don't even bother with these.
                case SDL_JOYAXISMOTION:
                case SDL_JOYBUTTONDOWN:
                case SDL_JOYBUTTONUP:
                case SDL_JOYDEVICEADDED:
                case SDL_JOYDEVICEREMOVED:
                    break;
                case SDL_CONTROLLERDEVICEADDED:
                    if(mConListener)
                        mConListener->controllerAdded(1, evt.cdevice); //We only support one joystick, so give everything a generic deviceID
                    break;
                case SDL_CONTROLLERDEVICEREMOVED:
                    if(mConListener)
                        mConListener->controllerRemoved(evt.cdevice);
                    break;
                case SDL_CONTROLLERBUTTONDOWN:
                    if(mConListener)
                        mConListener->buttonPressed(1, evt.cbutton);
                    break;
                case SDL_CONTROLLERBUTTONUP:
                    if(mConListener)
                        mConListener->buttonReleased(1, evt.cbutton);
                    break;
                case SDL_CONTROLLERAXISMOTION:
                    if(mConListener)
                        mConListener->axisMoved(1, evt.caxis);
                    break;
                case SDL_WINDOWEVENT:
                    handleWindowEvent(evt);
                    break;
                case SDL_QUIT:
                    if (mWindowListener)
                        mWindowListener->windowClosed();
                    break;
                case SDL_CLIPBOARDUPDATE:
                    break; // We don't need this event, clipboard is retrieved on demand
                default:
                    std::ios::fmtflags f(std::cerr.flags());
                    std::cerr << "Unhandled SDL event of type 0x" << std::hex << evt.type << std::endl;
                    std::cerr.flags(f);
                    break;
            }
        }
    }