Ejemplo n.º 1
0
//-----------------------------------------------------------------------------
// name: main_motion()
// desc: ...
//-----------------------------------------------------------------------------
void AudicleWindow::main_motion( int x, int y )
{
    assert( this == AudicleWindow::main() );
    set_mouse_coords(x,y);

//XXX
#ifdef MACOSX
    if ( 0 < x && x < m_cur_vp[2] && 0 < y && y < m_cur_vp[3] ) { 
        if ( cursorOn ) { 
            HideCursor();
            cursorOn = false;
        }
    }
    else { 
        if ( !cursorOn ) { 
            ShowCursor();
            cursorOn = true;
        }
    }
#endif

    InputEvent * ev = new InputEvent ( ae_input_MOTION, m_cur_pt );
    ev->time = get_current_time();

    AudicleEvent event;
    event.type = ae_event_INPUT;
    event.message = 2;
    event.data = (void *) ev;

    Audicle::instance()->face()->on_event( event );

    delete ev; //XXX assumes unqueued...

}
Ejemplo n.º 2
0
	Input InputManager::get_input(){
		static bool exit = false;

		frame_text.resize(0);

		SDL_Event evnt;
		SDL_StartTextInput();

		//Will keep looping until there are no more events to process
		while (SDL_PollEvent(&evnt)) {
			switch (evnt.type) {
			case SDL_QUIT:
				return Input::EXIT_REQUEST;
				break;
			case SDL_MOUSEMOTION:

				set_mouse_coords((F32)evnt.motion.x, (F32)evnt.motion.y);

				break;
			case SDL_TEXTINPUT:
				frame_text += evnt.text.text;
				break;
			case SDL_KEYDOWN:
				key_press(evnt.key.keysym.sym , KEYBOARD);
				break;
			case SDL_KEYUP:
				key_release(evnt.key.keysym.sym , KEYBOARD);
				break;
			case SDL_MOUSEBUTTONDOWN:
				key_press(evnt.button.button , MOUSE);
				break;
			case SDL_MOUSEBUTTONUP:
				key_release(evnt.button.button , MOUSE);
				break;
			case SDL_JOYBUTTONDOWN:  /* Handle Joystick Button Presses */
				key_press(evnt.jbutton.button , CONTROLLER);
				break;
			case SDL_JOYBUTTONUP:  /* Handle Joystick Button Presses */
				key_release(evnt.jbutton.button , CONTROLLER);
				break;
			case SDL_JOYAXISMOTION:
				
				switch (evnt.jaxis.axis){
				case 0: set_controller_axis_coord(&m_controller_LX_coords.x, evnt.jaxis.value); break;
				case 1: set_controller_axis_coord(&m_controller_LX_coords.y, evnt.jaxis.value); break;
				case 2: set_controller_axis_coord(&m_controller_RX_coords.x, evnt.jaxis.value); break;
				case 3: set_controller_axis_coord(&m_controller_RX_coords.y, evnt.jaxis.value); break;
				}
				
					
			}
		}

		SDL_StopTextInput();

		if (is_key_pressed(SDLK_ESCAPE,KEYBOARD))exit = !exit;
		if(!exit)SDL_WarpMouseInWindow(m_window, WINDOW_WIDTH / 2.0f, WINDOW_HEIGHT / 2.0f);

		return Input::OK;
	}
Ejemplo n.º 3
0
//-----------------------------------------------------------------------------
// name: main_mouse()
// desc: ...
//-----------------------------------------------------------------------------
void AudicleWindow::main_mouse( int button, int state, int x, int y)
{

    assert( this == AudicleWindow::main() );
    set_mouse_coords( x, y );


    //fetch pick stack
    main_pick();
    t_CKUINT * temp_stack = (t_CKUINT*) malloc ( m_pick_size * sizeof(t_CKUINT) );
    memcpy ( (void*)temp_stack, (void*)m_pick_top, m_pick_size * sizeof(t_CKUINT) );

    // create mouse input event
    InputEvent* ev = new InputEvent ( ae_input_MOUSE, m_cur_pt, button, state );
    ev->setMods( glutGetModifiers() );
    ev->setStack( temp_stack , m_pick_size );
    ev->time = get_current_time();

    InputEvent sub = *ev;

    //START AN AUDICLE EVENT 
    //make_mouse_event( m_cur_pt,  button, state );

    AudicleEvent event;
    event.type = ae_event_INPUT;
    event.message = 2;
    event.param1 = button;
    event.param2 = state;
    event.data = (void *) ev;

    Audicle::instance()->face()->on_event( event );

    sub.popStack();

//    if( m_console )
//    {
//        m_console->handleMouse( sub );
//        m_console->handleMouseAlerts( sub ); 
//    }

    free (temp_stack);
    delete ev; //XXX assumes unqueued...

    //    if ( wm ) wm->handleMouse(button, state, cur_pt);

    //    if ( DragManager::instance()->object() ) { } 

}
Ejemplo n.º 4
0
//-----------------------------------------------------------------------------
// name: main_depressed_motion()
// desc: ...
//-----------------------------------------------------------------------------
void AudicleWindow::main_depressed_motion( int x, int y )
{
    assert( this == AudicleWindow::main() );



    set_mouse_coords(x,y);
//   if ( wm ) wm->handleMotion(cur_pt);

    InputEvent * ev = new InputEvent ( ae_input_MOTION, m_cur_pt );
    ev->time = get_current_time();

    AudicleEvent event;
    event.type = ae_event_INPUT;
    event.message = 2;
    event.data = (void *) ev;


    Audicle::instance()->face()->on_event( event );

    delete ev; //XXX assumes unqueued...

}
Ejemplo n.º 5
0
//-----------------------------------------------------------------------------
// name: main_special_keys()
// desc: ...
//-----------------------------------------------------------------------------
void AudicleWindow::main_special_keys( int key, int x, int y )
{
    assert( this == AudicleWindow::main() );
    set_mouse_coords(x,y);
    
    InputEvent * ev = new InputEvent ( ae_input_SPEC, m_cur_pt, key ); 
    ev->setMods( glutGetModifiers() );
    ev->time = get_current_time();

    AudicleEvent event;
    event.type = ae_event_INPUT;
    event.message = 2;
    event.data = (void *) ev;

    bool handled = false;
    if ( ev->mods & ae_input_CTRL ) { 
        handled = true;
        switch ( key ) { 
        case KEY_LEFTARROW:
            Audicle::instance()->move( Audicle::LEFT );
//            if( m_console ) m_console->setCubes();
            break;    
        case KEY_RIGHTARROW:
            Audicle::instance()->move( Audicle::RIGHT );
//            if( m_console ) m_console->setCubes();
            break;
        case KEY_UPARROW:
            Audicle::instance()->move( Audicle::UP );
//            if( m_console ) m_console->setCubes();
            break;
        case KEY_DOWNARROW:
            Audicle::instance()->move( Audicle::DOWN );
//            if( m_console ) m_console->setCubes();
            break;
        default:
            handled = false; 
            break;
        }
    }
    else { 
        static float volume = 1.0f;
        handled = true;
        switch ( key ) { 
        case KEY_LEFTARROW:
            break;    
        case KEY_RIGHTARROW:
            break;
        case KEY_UPARROW:
            volume *= 1.05f;
            AudioCentral::instance()->set_gain( volume );
            fprintf( stderr, "[volume]: %f\n", AudioCentral::instance()->get_gain() );
            break;
        case KEY_DOWNARROW:
            volume *= 1.0f/1.1f;
            AudioCentral::instance()->set_gain( volume );
            fprintf( stderr, "[volume]: %f\n", AudioCentral::instance()->get_gain() );
            break;
        default:
            handled = false; 
            break;
        }
    }
    
    if ( !handled ) { 
//        if ( m_console && m_console->active()  && m_console->selected() ) 
//        { 
//            m_console->handleSpec ( *ev ) ;
//        }
//        else 
//        { 
            Audicle::instance()->face()->on_event( event );
//        }
    }

    delete ev; //XXX assumes unqueued...


//   if ( wm ) wm->handleSpec( key, cur_pt);  
}
Ejemplo n.º 6
0
//-----------------------------------------------------------------------------
// name: main_keyboard()
// desc: ...
//-----------------------------------------------------------------------------
void AudicleWindow::main_keyboard( unsigned char c, int x, int y )
{
    assert( this == AudicleWindow::main() );
    set_mouse_coords(x,y);
    static int w = 1024, h = 768;


    InputEvent * ev = new InputEvent ( ae_input_KEY, m_cur_pt, c ); 
    ev->setMods( glutGetModifiers() );
    ev->time = get_current_time();

    AudicleEvent event;
    event.type = ae_event_INPUT;
    event.message = 2;
    event.data = (void *) ev;
    
    bool handled = false;

    if( ev->mods & ae_input_CTRL ) 
    {
        switch( c )
        {   
        case KEY_CTRL_G:
            our_fullscreen = !our_fullscreen;
            if( our_fullscreen )
            {
                w = m_w;
                h = m_h;
                glutFullScreen();
            }
            else
                glutReshapeWindow( w, h );
            handled = true;
            break;
        case KEY_CTRL_Q:
            handled = true;
            exit( 0 );
            break;
        }
    }
    else { 
        switch ( c ) { 
        case '`':
            if ( ev->mods & ae_input_ALT ) {
                m_antialiased = !m_antialiased;
            }
//            else if( m_console ) { 
//                if ( m_console->active() ) m_console->deactivate();
//                else m_console->activate();
//            }
            handled = true;
            break;
        }

    }
    
    if ( !handled ) { 

//        if ( m_console && m_console->active() && m_console->selected() ) { 
//            m_console->handleKey( *ev );
//        }
//        else { 
            Audicle::instance()->face()->on_event( event );
//        }


    }
    delete ev; //XXX assumes unqueued...


//   if ( wm ) wm->handleKey( c, cur_pt );
}