Navigation Menu

Skip to content

Commit

Permalink
Updating Tuio with changes from OSC
Browse files Browse the repository at this point in the history
  • Loading branch information
bartleyryan committed Sep 26, 2016
1 parent 13d3aa0 commit cb64ea9
Show file tree
Hide file tree
Showing 16 changed files with 1,018 additions and 1,086 deletions.
3 changes: 1 addition & 2 deletions blocks/OSC/samples/SimpleReceiver/src/SimpleReceiverApp.cpp
Expand Up @@ -37,13 +37,12 @@ class SimpleReceiverApp : public App {
};

SimpleReceiverApp::SimpleReceiverApp()
: mReceiver( localPort )
: mReceiver( 3000 )
{
}

void SimpleReceiverApp::setup()
{
// Set up the callbacks for the receiver.
mReceiver.setListener( "/mousemove/1",
[&]( const osc::Message &msg ){
mCurrentCirclePos.x = msg[0].int32();
Expand Down
38 changes: 30 additions & 8 deletions blocks/TUIO/samples/TuioListener/src/TuioListenerApp.cpp
Expand Up @@ -44,18 +44,40 @@ class TuioClientApp : public App {
void updated( const tuio::Cursor2d &cursor );
void removed( const tuio::Cursor2d &cursor );

std::shared_ptr<tuio::Receiver> tuio;
std::map<std::string, std::vector<vec2>> mTouches;
std::shared_ptr<osc::ReceiverUdp> mOscReceiver;
std::shared_ptr<tuio::Receiver> mTuio;
std::map<std::string, std::vector<vec2>> mTouches;
};

void TuioClientApp::setup()
{
tuio = std::shared_ptr<tuio::Receiver>( new tuio::Receiver() );
tuio->connect();

tuio->setAddedFn<tuio::Cursor2d>( std::bind( &TuioClientApp::added, this, std::placeholders::_1 ) );
tuio->setUpdatedFn<tuio::Cursor2d>( std::bind( &TuioClientApp::updated, this, std::placeholders::_1 ) );
tuio->setRemovedFn<tuio::Cursor2d>( std::bind( &TuioClientApp::removed, this, std::placeholders::_1 ) );
// Create your osc receiver with whatever configuration needed. In this case we'll open it up
// with the Default Tuio Port - 3333.
mOscReceiver = std::make_shared<osc::ReceiverUdp>( tuio::Receiver::DEFAULT_TUIO_PORT );
// Create the Tuio Receiver passing the Osc Receiver's pointer.
mTuio = std::make_shared<tuio::Receiver>( mOscReceiver.get() );
// Add your tuio callbacks.
mTuio->setAddedFn<tuio::Cursor2d>( std::bind( &TuioClientApp::added, this, std::placeholders::_1 ) );
mTuio->setUpdatedFn<tuio::Cursor2d>( std::bind( &TuioClientApp::updated, this, std::placeholders::_1 ) );
mTuio->setRemovedFn<tuio::Cursor2d>( std::bind( &TuioClientApp::removed, this, std::placeholders::_1 ) );
// Bind the Osc Receiver...
try {
mOscReceiver->bind();
}
catch( const ci::Exception &ex ) {
CI_LOG_EXCEPTION( "OscReceiver bind", ex );
quit();
}
// And listen for messages.
mOscReceiver->listen(
[]( asio::error_code ec, asio::ip::udp::endpoint ep ) -> bool {
if( ec ) {
CI_LOG_E( "Error on listener: " << ec.message() << " Error Value: " << ec.value() );
return false;
}
else
return true;
} );
}

void TuioClientApp::added( const tuio::Cursor2d &cursor )
Expand Down
Expand Up @@ -10,3 +10,4 @@




Expand Up @@ -18,34 +18,34 @@ struct TouchPoint {
TouchPoint( const vec2 &initialPt, const Color &color )
: mColor( color ), mTimeOfDeath( -1.0 )
{
mLine.push_back( initialPt );
mLine.push_back( initialPt );
}

void addPoint( const vec2 &pt ) { mLine.push_back( pt ); }

void draw() const
{
if( mTimeOfDeath > 0 ) // are we dying? then fade out
gl::color( ColorA( mColor, ( mTimeOfDeath - getElapsedSeconds() ) / 2.0f ) );
else
gl::color( mColor );

gl::draw( mLine );
}

void startDying() { mTimeOfDeath = getElapsedSeconds() + 2.0f; } // two seconds til dead

bool isDead() const { return getElapsedSeconds() > mTimeOfDeath; }

PolyLine2 mLine;
Color mColor;
float mTimeOfDeath;
};

// We'll create a new Cinder Application by deriving from the BasicApp class
class MultiTouchApp : public App {
public:
MultiTouchApp();
class TuioMultiTouchBasicApp : public App {
public:
TuioMultiTouchBasicApp();

void touchesBegan( TouchEvent event ) override;
void touchesMoved( TouchEvent event ) override;
Expand All @@ -54,37 +54,56 @@ class MultiTouchApp : public App {
void setup() override;
void draw() override;
void keyDown( KeyEvent event ) override;
map<uint32_t,TouchPoint> mActivePoints;

map<uint32_t, TouchPoint> mActivePoints;
list<TouchPoint> mDyingPoints;
osc::ReceiverUdp mOscReceiver;
tuio::Receiver mTuio;
};

MultiTouchApp::MultiTouchApp()
: App(), mTuio( app::getWindow() )
TuioMultiTouchBasicApp::TuioMultiTouchBasicApp()
: App(), mOscReceiver( tuio::Receiver::DEFAULT_TUIO_PORT ),
mTuio( app::getWindow(), &mOscReceiver )
{
}

void MultiTouchApp::setup()
void TuioMultiTouchBasicApp::setup()
{
mTuio.connect();
// Bind the Osc Receiver...
try {
mOscReceiver.bind();
}
catch( const ci::Exception &ex ) {
CI_LOG_EXCEPTION( "OscReceiver bind", ex );
quit();
}
// And listen for messages.
mOscReceiver.listen(
[]( asio::error_code ec, asio::ip::udp::endpoint ep ) -> bool {
if( ec ) {
CI_LOG_E( "Error on listener: " << ec.message() << " Error Value: " << ec.value() );
return false;
}
else
return true;
} );
}

void MultiTouchApp::touchesBegan( TouchEvent event )
void TuioMultiTouchBasicApp::touchesBegan( TouchEvent event )
{
for( auto & touch : event.getTouches() ) {
Color newColor( CM_HSV, Rand::randFloat(), 1, 1 );
mActivePoints.insert( make_pair( touch.getId(), TouchPoint( touch.getPos(), newColor ) ) );
}
}

void MultiTouchApp::touchesMoved( TouchEvent event )
void TuioMultiTouchBasicApp::touchesMoved( TouchEvent event )
{
for( auto & touch : event.getTouches() )
mActivePoints[touch.getId()].addPoint( touch.getPos() );
}

void MultiTouchApp::touchesEnded( TouchEvent event )
void TuioMultiTouchBasicApp::touchesEnded( TouchEvent event )
{
for( auto & touch : event.getTouches() ) {
mActivePoints[touch.getId()].startDying();
Expand All @@ -93,13 +112,13 @@ void MultiTouchApp::touchesEnded( TouchEvent event )
}
}

void MultiTouchApp::keyDown( KeyEvent event )
void TuioMultiTouchBasicApp::keyDown( KeyEvent event )
{
if( event.getChar() == 'f' )
setFullScreen( ! isFullScreen() );
if( event.getChar() == 'f' )
setFullScreen( !isFullScreen() );
}

void MultiTouchApp::draw()
void TuioMultiTouchBasicApp::draw()
{
gl::enableAlphaBlending();
gl::clear( Color( 0.1f, 0.1f, 0.1f ) );
Expand All @@ -115,14 +134,14 @@ void MultiTouchApp::draw()
else
++dyingIt;
}

// draw yellow circles at the active touch points
gl::color( Color( 1, 1, 0 ) );
// vector<TouchEvent::Touch> activeTouches( mTuio.getActiveTouches() );
// for( auto touchIt = activeTouches.begin(); touchIt != activeTouches.end(); ++touchIt )
// gl::drawStrokedCircle( touchIt->getPos(), 20.0f );
// vector<TouchEvent::Touch> activeTouches( mTuio.getActiveTouches() );
// for( auto touchIt = activeTouches.begin(); touchIt != activeTouches.end(); ++touchIt )
// gl::drawStrokedCircle( touchIt->getPos(), 20.0f );
}

CINDER_APP( MultiTouchApp, RendererGl, []( App::Settings *settings ) {
CINDER_APP( TuioMultiTouchBasicApp, RendererGl, []( App::Settings *settings ) {
settings->setMultiTouchEnabled( false );
} )
@@ -1,25 +1,18 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25123.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TUIOMultiTouchBasic", "TUIOMultiTouchBasic.vcxproj", "{FDB75556-CAD1-4335-AD90-A5C319016065}"
# Visual Studio 2013
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TuioMultiTouchBasic", "TuioMultiTouchBasic.vcxproj", "{D1C375A7-1178-492A-990E-9689B1249E52}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{FDB75556-CAD1-4335-AD90-A5C319016065}.Debug|Win32.ActiveCfg = Debug|Win32
{FDB75556-CAD1-4335-AD90-A5C319016065}.Debug|Win32.Build.0 = Debug|Win32
{FDB75556-CAD1-4335-AD90-A5C319016065}.Debug|x64.ActiveCfg = Debug|Win32
{FDB75556-CAD1-4335-AD90-A5C319016065}.Debug|x64.Build.0 = Debug|Win32
{FDB75556-CAD1-4335-AD90-A5C319016065}.Release|Win32.ActiveCfg = Release|Win32
{FDB75556-CAD1-4335-AD90-A5C319016065}.Release|Win32.Build.0 = Release|Win32
{FDB75556-CAD1-4335-AD90-A5C319016065}.Release|x64.ActiveCfg = Release|Win32
{FDB75556-CAD1-4335-AD90-A5C319016065}.Release|x64.Build.0 = Release|Win32
{D1C375A7-1178-492A-990E-9689B1249E52}.Debug|x64.ActiveCfg = Debug|x64
{D1C375A7-1178-492A-990E-9689B1249E52}.Debug|x64.Build.0 = Debug|x64
{D1C375A7-1178-492A-990E-9689B1249E52}.Release|x64.ActiveCfg = Release|x64
{D1C375A7-1178-492A-990E-9689B1249E52}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
@@ -1,83 +1,76 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{FDB75556-CAD1-4335-AD90-A5C319016065}</ProjectGuid>
<RootNamespace>TUIOMultiTouchBasic</RootNamespace>
<ProjectGuid>{D1C375A7-1178-492A-990E-9689B1249E52}</ProjectGuid>
<RootNamespace>TuioMultiTouchBasic</RootNamespace>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
<WholeProgramOptimization>true</WholeProgramOptimization>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings" />
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\include;..\..\..\..\..\include;..\..\..\..\OSC\src;..\..\..\src</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;NOMINMAX;_WIN32_WINNT=0x0502;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild>
<AdditionalIncludeDirectories>..\include;"..\..\..\..\..\include";..\..\..\..\OSC\src;..\..\..\src</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_WIN32_WINNT=0x0601;_WINDOWS;NOMINMAX;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>"..\..\..\..\..\\include";..\include</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>"..\..\..\..\..\include";..\include</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>cinder-$(PlatformToolset)_d.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>"..\..\..\..\..\\lib\msw\$(PlatformTarget)"</AdditionalLibraryDirectories>
<AdditionalDependencies>cinder-$(PlatformToolset)_d.lib;OpenGL32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>"..\..\..\..\..\lib\msw\$(PlatformTarget)"</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention />
<TargetMachine>MachineX86</TargetMachine>
<IgnoreSpecificDefaultLibraries>LIBCMT;LIBCPMT</IgnoreSpecificDefaultLibraries>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<AdditionalIncludeDirectories>..\include;..\..\..\..\..\include;..\..\..\..\OSC\src;..\..\..\src</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;NOMINMAX;_WIN32_WINNT=0x0502;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>..\include;"..\..\..\..\..\include";..\..\..\..\OSC\src;..\..\..\src</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_WIN32_WINNT=0x0601;_WINDOWS;NOMINMAX;NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader />
<WarningLevel>Level3</WarningLevel>
Expand All @@ -88,34 +81,35 @@
<LinkLibraryDependencies>true</LinkLibraryDependencies>
</ProjectReference>
<ResourceCompile>
<AdditionalIncludeDirectories>"..\..\..\..\..\\include";..\include</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>"..\..\..\..\..\include";..\include</AdditionalIncludeDirectories>
</ResourceCompile>
<Link>
<AdditionalDependencies>cinder-$(PlatformToolset).lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>"..\..\..\..\..\\lib\msw\$(PlatformTarget)"</AdditionalLibraryDirectories>
<AdditionalDependencies>cinder-$(PlatformToolset).lib;OpenGL32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>"..\..\..\..\..\lib\msw\$(PlatformTarget)"</AdditionalLibraryDirectories>
<GenerateDebugInformation>false</GenerateDebugInformation>
<GenerateMapFile>true</GenerateMapFile>
<SubSystem>Windows</SubSystem>
<OptimizeReferences>true</OptimizeReferences>
<EnableCOMDATFolding />
<RandomizedBaseAddress>false</RandomizedBaseAddress>
<DataExecutionPrevention />
<TargetMachine>MachineX86</TargetMachine>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ResourceCompile Include="Resources.rc" />
</ItemGroup>
<ItemGroup />
<ItemGroup />
<ItemGroup>
<ClCompile Include="..\src\TuioMultiTouchBasicApp.cpp" />
<ClCompile Include="..\..\..\..\OSC\src\cinder\osc\Osc.cpp" />
<ClCompile Include="..\..\..\src\cinder\tuio\Tuio.cpp" />
<ClCompile Include="..\src\TUIOMultiTouchBasicApp.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\include\Resources.h" />
<ClInclude Include="..\..\..\..\OSC\src\cinder\osc\Osc.h" />
<ClInclude Include="..\..\..\src\cinder\tuio\Tuio.h" />
<ClInclude Include="..\include\Resources.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets" />
</Project>
</Project>

0 comments on commit cb64ea9

Please sign in to comment.