topical media & game development
lib-of-vs-apps-addonsExamples-oscSenderExample-src-testApp.cpp / cpp
include <testApp.h>
//--------------------------------------------------------------
void testApp::setup(){
// listen on the given port
std::cout << "listening for osc messages on port " << PORT << "\n";
receiver.setup( PORT );
current_msg_string = 0;
mouseX = 0;
mouseY = 0;
strcpy( mouseButtonState, "" );
ofBackground( 30, 30, 130 );
}
//--------------------------------------------------------------
void testApp::update(){
// hide old messages
for ( int i=0; i<NUM_MSG_STRINGS; i++ )
{
if ( timers[i] < ofGetElapsedTimef() )
msg_strings[i] = "";
}
// check for waiting messages
while( receiver.hasWaitingMessages() )
{
// get the next message
ofxOscMessage m;
receiver.getNextMessage( &m );
// check for mouse moved message
if ( strcmp( m.getAddress().c_str(), "/mouse/position" ) == 0 )
{
// both the arguments are int32's
mouseX = m.getArgAsInt32( 0 );
mouseY = m.getArgAsInt32( 1 );
}
// check for mouse button message
else if ( strcmp( m.getAddress().c_str(), "/mouse/button" ) == 0 )
{
// the single argument is a string
strcpy( mouseButtonState, m.getArgAsString( 0 ).c_str() );
}
else
{
// unrecognized message: display on the bottom of the screen
char msg_string[16384];
strcpy( msg_string, m.getAddress().c_str() );
strcat( msg_string, ": " );
for ( int i=0; i<m.getNumArgs(); i++ )
{
// get the argument type
strcat( msg_string, m.getArgTypeName( i ).c_str() );
strcat( msg_string, ":" );
// display the argument - make sure we get the right type
if( m.getArgType( i ) == OFXOSC_TYPE_INT32 )
sprintf( msg_string, "\%s\%d ", msg_string, m.getArgAsInt32( i ) );
else if( m.getArgType( i ) == OFXOSC_TYPE_FLOAT )
sprintf( msg_string, "\%s\%f ", msg_string, m.getArgAsFloat( i ) );
else if( m.getArgType( i ) == OFXOSC_TYPE_STRING )
sprintf( msg_string, "\%s\"\%s\" ", msg_string, m.getArgAsString( i ) );
else
strcat( msg_string, "unknown" );
}
// add to the list of strings to display
msg_strings[current_msg_string] = msg_string;
timers[current_msg_string] = ofGetElapsedTimef() + 5.0f;
current_msg_string = ( current_msg_string + 1 ) % NUM_MSG_STRINGS;
// clear the next line
msg_strings[current_msg_string] = "";
}
}
}
//--------------------------------------------------------------
void testApp::draw(){
char buf[256];
sprintf( buf, "listening for osc messages on port \%d", PORT );
ofDrawBitmapString( buf, 10, 20 );
// draw mouse state
sprintf( buf, "mouse: % 4d % 4d", mouseX, mouseY );
ofDrawBitmapString( buf, 430, 20 );
ofDrawBitmapString( mouseButtonState, 580, 20 );
for ( int i=0; i<NUM_MSG_STRINGS; i++ )
{
ofDrawBitmapString( (char*)msg_strings[i].c_str(), 10, 40+15*i );
}
}
//--------------------------------------------------------------
void testApp::keyPressed (int key){
}
//--------------------------------------------------------------
void testApp::mouseMoved(int x, int y ){
}
//--------------------------------------------------------------
void testApp::mouseDragged(int x, int y, int button){
}
//--------------------------------------------------------------
void testApp::mousePressed(int x, int y, int button){
}
//--------------------------------------------------------------
void testApp::mouseReleased(int x, int y, int button){
}
//--------------------------------------------------------------
void testApp::windowResized(int w, int h){
}
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.