From bc4085701e4bfdefc58c392f6c13b2ceb3eac9f3 Mon Sep 17 00:00:00 2001 From: 54way <54way@ultracombos.com> Date: Wed, 14 Oct 2020 11:00:19 +0800 Subject: [PATCH] [OSC2UltraControl] add project --- .gitmodules | 16 + of_v0.11.0/.gitignore | 139 ++++++++ of_v0.11.0/addons/ofxImGui | 1 + of_v0.11.0/addons/ofxUltraControls | 1 + .../OSC2UltraControl/OSC2UltraControl.vcxproj | 293 +++++++++++++++++ .../OSC2UltraControl.vcxproj.filters | 297 ++++++++++++++++++ .../apps/myApps/OSC2UltraControl/addons.make | 0 .../myApps/OSC2UltraControl/bin/data/Test.xml | 23 ++ .../myApps/OSC2UltraControl/emptyExample.png | Bin 0 -> 114064 bytes .../apps/myApps/OSC2UltraControl/icon.rc | 8 + .../apps/myApps/OSC2UltraControl/src/main.cpp | 14 + .../myApps/OSC2UltraControl/src/ofApp.cpp | 188 +++++++++++ .../apps/myApps/OSC2UltraControl/src/ofApp.h | 36 +++ of_v0.11.0/apps/myApps/ucEmptyExample | 1 + of_v0.11.0/uc_libs/lib_UltraControls | 1 + 15 files changed, 1018 insertions(+) create mode 100644 of_v0.11.0/.gitignore create mode 160000 of_v0.11.0/addons/ofxImGui create mode 160000 of_v0.11.0/addons/ofxUltraControls create mode 100644 of_v0.11.0/apps/myApps/OSC2UltraControl/OSC2UltraControl.vcxproj create mode 100644 of_v0.11.0/apps/myApps/OSC2UltraControl/OSC2UltraControl.vcxproj.filters create mode 100644 of_v0.11.0/apps/myApps/OSC2UltraControl/addons.make create mode 100644 of_v0.11.0/apps/myApps/OSC2UltraControl/bin/data/Test.xml create mode 100644 of_v0.11.0/apps/myApps/OSC2UltraControl/emptyExample.png create mode 100644 of_v0.11.0/apps/myApps/OSC2UltraControl/icon.rc create mode 100644 of_v0.11.0/apps/myApps/OSC2UltraControl/src/main.cpp create mode 100644 of_v0.11.0/apps/myApps/OSC2UltraControl/src/ofApp.cpp create mode 100644 of_v0.11.0/apps/myApps/OSC2UltraControl/src/ofApp.h create mode 160000 of_v0.11.0/apps/myApps/ucEmptyExample create mode 160000 of_v0.11.0/uc_libs/lib_UltraControls diff --git a/.gitmodules b/.gitmodules index 9b47b34..27566e4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -83,3 +83,19 @@ path = _Package/com.ultracombos.coloring url = https://github.com/UltraCombos/com.ultracombos.coloring branch = master +[submodule "of_v0.11.0/addons/ofxImGui"] + path = of_v0.11.0/addons/ofxImGui + url = https://github.com/UltraCombos/ofxImGui.git + branch = master +[submodule "of_v0.11.0/addons/ofxUltraControls"] + path = of_v0.11.0/addons/ofxUltraControls + url = https://github.com/UltraCombos/ofxUltraControls.git + branch = master +[submodule "of_v0.11.0/uc_libs/lib_UltraControls"] + path = of_v0.11.0/uc_libs/lib_UltraControls + url = https://github.com/UltraCombos/lib_UltraControls.git + branch = master +[submodule "of_v0.11.0/apps/myApps/ucEmptyExample"] + path = of_v0.11.0/apps/myApps/ucEmptyExample + url = https://github.com/UltraCombos/ucEmptyExample.git + branch = master diff --git a/of_v0.11.0/.gitignore b/of_v0.11.0/.gitignore new file mode 100644 index 0000000..afb0548 --- /dev/null +++ b/of_v0.11.0/.gitignore @@ -0,0 +1,139 @@ +/libs +/export +/addons/ofxAccelerometer +/addons/ofxAssimpModelLoader +/addons/ofxGui +/addons/ofxNetwork +/addons/ofxOsc +/addons/ofxSvg +/addons/ofxThreadedImageLoader +/addons/ofxVectorGraphics +/addons/ofxXmlSettings +/addons/ofxAndroid +/addons/ofxEmscripten +/addons/ofxGPS +/addons/ofxKinect +/addons/ofxOpenCv +/addons/ofxPoco +/addons/ofxiOS +/addons/ofxUnitTests +/apps/myApps/emptyExample +/docs +/other/examples +/libs +/scripts + +*.obj + + +# Created by https://www.gitignore.io/api/openframeworks+visualstudio +# Edit at https://www.gitignore.io/?templates=openframeworks+visualstudio + +### OpenFrameworks+VisualStudio ### +# ignore generated binaries +# but not the data folder + +/bin/* +!/bin/data/ + +# general + +[Bb]uild/ +[Oo]bj/ +*.o +[Dd]ebug*/ +[Rr]elease*/ +*.mode* +*.app/ +*.pyc +.svn/ +*.log + +# IDE files which should +# be ignored + +# XCode +*.pbxuser +*.perspective +*.perspectivev3 +*.mode1v3 +*.mode2v3 +# XCode 4 +xcuserdata +*.xcworkspace + +# Code::Blocks +*.depend +*.layout + +# Visual Studio +*.sdf +*.opensdf +*.suo +*.pdb +*.ilk +*.aps +ipch/ + +# Eclipse +.metadata +local.properties +.externalToolBuilders + +# operating system + +# Linux +*~ +# KDE +.directory +.AppleDouble + +# OSX +.DS_Store +*.swp +*~.nib +# Thumbnails +._* + +# Windows +# Image file caches +Thumbs.db +# Folder config file +Desktop.ini + +# Android +.csettings + +### OpenFrameworks+VisualStudio Patch ### +.vs/ +*.ncb +*.opendb +*.cachefile +*.VC.db +*.VC.VC.opendb +*.psess +*.vsp +*.vspx +*.sap + +# End of https://www.gitignore.io/api/openframeworks+visualstudio/docs +/examples +/other +/projectGenerator-vs +/scripts +Debug* +Release* +*.lib +*.md +*.db* +*.opendb +*.ipch +*.suo +*.dll +*.exe +*.exp +*.obj +*.iobj +*.ipdb +*.ilk +*.pdb \ No newline at end of file diff --git a/of_v0.11.0/addons/ofxImGui b/of_v0.11.0/addons/ofxImGui new file mode 160000 index 0000000..e3aaeb8 --- /dev/null +++ b/of_v0.11.0/addons/ofxImGui @@ -0,0 +1 @@ +Subproject commit e3aaeb860722bd257ec3bb66ec4bacd063919ae7 diff --git a/of_v0.11.0/addons/ofxUltraControls b/of_v0.11.0/addons/ofxUltraControls new file mode 160000 index 0000000..18ab965 --- /dev/null +++ b/of_v0.11.0/addons/ofxUltraControls @@ -0,0 +1 @@ +Subproject commit 18ab9656f687de91b10714c1f0a828b01faf9e20 diff --git a/of_v0.11.0/apps/myApps/OSC2UltraControl/OSC2UltraControl.vcxproj b/of_v0.11.0/apps/myApps/OSC2UltraControl/OSC2UltraControl.vcxproj new file mode 100644 index 0000000..5d887cd --- /dev/null +++ b/of_v0.11.0/apps/myApps/OSC2UltraControl/OSC2UltraControl.vcxproj @@ -0,0 +1,293 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + $([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0')) + $(LatestTargetPlatformVersion) + $(WindowsTargetPlatformVersion) + + + {7FD42DF7-442E-479A-BA76-D0022F99702A} + Win32Proj + OSC2UltraControl + + + + Application + Unicode + v141 + + + Application + Unicode + v141 + + + Application + Unicode + true + v141 + + + Application + Unicode + true + v141 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bin\ + obj\$(Platform)\$(Configuration)\ + $(ProjectName)_debug + true + true + + + bin\ + obj\$(Platform)\$(Configuration)\ + $(ProjectName)_debug + true + true + + + bin\ + obj\$(Platform)\$(Configuration)\ + false + + + bin\ + obj\$(Platform)\$(Configuration)\ + false + + + + Disabled + EnableFastChecks + %(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + %(AdditionalIncludeDirectories);src + CompileAsCpp + $(IntDir) + + + true + Console + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + + + + + + Disabled + EnableFastChecks + %(PreprocessorDefinitions) + MultiThreadedDebugDLL + Level3 + %(AdditionalIncludeDirectories);src + CompileAsCpp + true + $(IntDir) + + + true + Console + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + + + + + + false + %(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + %(AdditionalIncludeDirectories);src + CompileAsCpp + true + $(IntDir) + + + false + false + Console + true + true + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + + + + + + false + %(PreprocessorDefinitions) + MultiThreadedDLL + Level3 + %(AdditionalIncludeDirectories);src + CompileAsCpp + $(IntDir) + + + false + false + Console + true + true + false + %(AdditionalDependencies) + %(AdditionalLibraryDirectories) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {5837595d-aca9-485c-8e76-729040ce4b0b} + + + + + /D_DEBUG %(AdditionalOptions) + /D_DEBUG %(AdditionalOptions) + $(OF_ROOT)\libs\openFrameworksCompiled\project\vs + + + + + + + + + \ No newline at end of file diff --git a/of_v0.11.0/apps/myApps/OSC2UltraControl/OSC2UltraControl.vcxproj.filters b/of_v0.11.0/apps/myApps/OSC2UltraControl/OSC2UltraControl.vcxproj.filters new file mode 100644 index 0000000..75d5a47 --- /dev/null +++ b/of_v0.11.0/apps/myApps/OSC2UltraControl/OSC2UltraControl.vcxproj.filters @@ -0,0 +1,297 @@ + + + + + src + + + src + + + addons\ofxUltraControls\src + + + addons\ofxUltraControls\src + + + uc_libs\lib_UltraControls\src + + + uc_libs\lib_UltraControls\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\libs + + + addons\ofxImGui\libs + + + addons\ofxImGui\libs + + + addons\ofxImGui\libs + + + addons\ofxOsc\src + + + addons\ofxOsc\src + + + addons\ofxOsc\src + + + addons\ofxOsc\src + + + addons\ofxOsc\libs\oscpack\src\ip + + + addons\ofxOsc\libs\oscpack\src\ip\win32 + + + addons\ofxOsc\libs\oscpack\src\ip\win32 + + + addons\ofxOsc\libs\oscpack\src\osc + + + addons\ofxOsc\libs\oscpack\src\osc + + + addons\ofxOsc\libs\oscpack\src\osc + + + addons\ofxOsc\libs\oscpack\src\osc + + + + + {d8376475-7454-4a24-b08a-aac121d3ad6f} + + + {1b70f676-6198-4aab-8a10-9d74c64eaff0} + + + {5321ca23-ba83-45a3-b830-3c2ce3845d08} + + + {c9c06d07-c064-418a-b236-5616de4fc65f} + + + {b2fdb7b9-f10d-408c-934b-609257c34857} + + + {c4f2439c-9bfa-430e-a565-b9d1d057772c} + + + {9f7c261d-f652-4b08-9559-b14495e5dc98} + + + {fc14fcd8-8da7-47c6-a30c-0706be024399} + + + {7cb3d11f-40c8-4567-b49f-f6505087f1f6} + + + {d3f9c8d8-774e-4f79-a0e0-5723676ea0bf} + + + {4ca39b3b-95d6-4029-a947-5e6dc7d9a268} + + + {9091508e-b5a5-4812-bd8d-b01467947a79} + + + {46cb6b97-acfc-4f14-82a1-a515f1247b1e} + + + {64d801cd-ffb5-4ce8-8807-9d051c22e6e1} + + + {89ce4e2a-00be-4811-90ee-9e7982753f36} + + + {1c5366d0-8548-4b16-b663-9235aed9f001} + + + {6d211978-c3d2-4728-93df-87fa56d7cdee} + + + {78163d86-1ad9-4290-aa28-fecbdd00fe60} + + + + + src + + + addons\ofxUltraControls\src + + + addons\ofxUltraControls\src + + + addons\ofxUltraControls\src + + + uc_libs\lib_UltraControls\src + + + uc_libs\lib_UltraControls\src + + + uc_libs\lib_UltraControls\src + + + uc_libs\lib_UltraControls\src + + + uc_libs\lib_UltraControls\src + + + uc_libs\lib_UltraControls\src + + + uc_libs\lib_UltraControls\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\src + + + addons\ofxImGui\libs + + + addons\ofxImGui\libs + + + addons\ofxImGui\libs + + + addons\ofxImGui\libs + + + addons\ofxImGui\libs + + + addons\ofxOsc\src + + + addons\ofxOsc\src + + + addons\ofxOsc\src + + + addons\ofxOsc\src + + + addons\ofxOsc\src + + + addons\ofxOsc\src + + + addons\ofxOsc\libs\oscpack\src\ip + + + addons\ofxOsc\libs\oscpack\src\ip + + + addons\ofxOsc\libs\oscpack\src\ip + + + addons\ofxOsc\libs\oscpack\src\ip + + + addons\ofxOsc\libs\oscpack\src\ip + + + addons\ofxOsc\libs\oscpack\src\osc + + + addons\ofxOsc\libs\oscpack\src\osc + + + addons\ofxOsc\libs\oscpack\src\osc + + + addons\ofxOsc\libs\oscpack\src\osc + + + addons\ofxOsc\libs\oscpack\src\osc + + + addons\ofxOsc\libs\oscpack\src\osc + + + addons\ofxOsc\libs\oscpack\src\osc + + + addons\ofxOsc\libs\oscpack\src\osc + + + + + + \ No newline at end of file diff --git a/of_v0.11.0/apps/myApps/OSC2UltraControl/addons.make b/of_v0.11.0/apps/myApps/OSC2UltraControl/addons.make new file mode 100644 index 0000000..e69de29 diff --git a/of_v0.11.0/apps/myApps/OSC2UltraControl/bin/data/Test.xml b/of_v0.11.0/apps/myApps/OSC2UltraControl/bin/data/Test.xml new file mode 100644 index 0000000..31f1f36 --- /dev/null +++ b/of_v0.11.0/apps/myApps/OSC2UltraControl/bin/data/Test.xml @@ -0,0 +1,23 @@ + + + + + 0 + 0 + 640 + 480 + + false + false + true + true + true + + 0.211 + + 0 + 133 + 0 + 0 + + diff --git a/of_v0.11.0/apps/myApps/OSC2UltraControl/emptyExample.png b/of_v0.11.0/apps/myApps/OSC2UltraControl/emptyExample.png new file mode 100644 index 0000000000000000000000000000000000000000..8de27cc4d64339a1d1e62d128e9c16d20a30dabc GIT binary patch literal 114064 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 + } + + + ofxImGuiParameter::Initialize(); + ctx = ImGui::GetCurrentContext(); + m_imgui_parameter.setup("Test"); + m_imgui_parameter.set_fit_window(true); + m_imgui_parameter.bind(triggerDuration.set("Trigger Duration", triggerDuration, 0, 2)); + + osc_receiver.setup(7001); +} + +//-------------------------------------------------------------- +void ofApp::update(){ + + receiveMessage(); + + + m_sp_uc_setter->update(); + if (m_sp_param_group) + { + ofParameterGroup & group =*m_sp_param_group.get(); + for (int i = 0; i < group.size(); ++i) + { + ofAbstractParameter& param = group[i]; + auto type_name = param.type(); + if (type_name != typeid(ofParameter).name()) + continue; + string prefix = "CHANNEL_"; + int ch = ofToInt(param.getName().substr(prefix.size())); + //printf("ch=%d\n",ch); + ofParameter& param_int = param.cast(); + if (triggerTimeStamp.find(ch) == triggerTimeStamp.end()) + { + param_int = 0; + } + else + { + float stamp = ofGetElapsedTimef(); + if (stamp - triggerTimeStamp[ch] < triggerDuration) + { + param_int = 255; + } + else + { + param_int = 0; + } + } + } + } + else + { + if ((m_sp_param_group = m_sp_uc_setter->get_paramter_group())) + { + m_imgui_parameter.bind(*m_sp_param_group.get()); + ofParameterGroup & group = *m_sp_param_group.get(); + m_imgui_parameter.load(); + ofNotifyEvent(group.parameterChangedE(), group); + } + } +} + +//-------------------------------------------------------------- +void ofApp::draw(){ + //m_gui.draw(); + + + SetContex(); + ofxImGuiParameter::Draw(); +} + +//-------------------------------------------------------------- +void ofApp::keyPressed(int key){ + +} + +//-------------------------------------------------------------- +void ofApp::keyReleased(int key){ + +} + +//-------------------------------------------------------------- +void ofApp::mouseMoved(int x, int y){ + +} + +//-------------------------------------------------------------- +void ofApp::mouseDragged(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void ofApp::mousePressed(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void ofApp::mouseReleased(int x, int y, int button){ + +} + +//-------------------------------------------------------------- +void ofApp::mouseEntered(int x, int y){ + +} + +//-------------------------------------------------------------- +void ofApp::mouseExited(int x, int y){ + +} + +//-------------------------------------------------------------- +void ofApp::windowResized(int w, int h){ + +} + +//-------------------------------------------------------------- +void ofApp::gotMessage(ofMessage msg){ + +} + +//-------------------------------------------------------------- +void ofApp::dragEvent(ofDragInfo dragInfo){ + +} +void ofApp::SetContex() +{ + if (ctx ) + ImGui::SetCurrentContext(ctx); + +} +void ofApp::receiveMessage() +{ + while (osc_receiver.hasWaitingMessages()) { + ofxOscMessage m; + osc_receiver.getNextMessage(m); + + std::string msgString; + msgString = m.getAddress(); + msgString += ":"; + for (size_t i = 0; i < m.getNumArgs(); i++) { + + // get the argument type + msgString += " "; + msgString += m.getArgTypeName(i); + msgString += ":"; + + // display the argument - make sure we get the right type + if (m.getArgType(i) == OFXOSC_TYPE_INT32) { + msgString += ofToString(m.getArgAsInt32(i)); + } + else if (m.getArgType(i) == OFXOSC_TYPE_FLOAT) { + msgString += ofToString(m.getArgAsFloat(i)); + } + else if (m.getArgType(i) == OFXOSC_TYPE_STRING) { + msgString += m.getArgAsString(i); + } + else { + msgString += "unhandled argument type " + m.getArgTypeName(i); + } + } + printf("%s\n", msgString.c_str()); + + auto addr = m.getAddress(); + auto tokens = ofSplitString(addr, "/"); + + if (tokens.size() == 3 && m.getNumArgs() == 1 && m.getArgType(0) == OFXOSC_TYPE_INT32) + { + int ch = ofToInt(tokens[2]); + int i = m.getArgAsInt32(0); + if (i == 3) + { + printf("channel = %d, enter", ch); + if (triggerTimeStamp.find(ch) == triggerTimeStamp.end()) + triggerTimeStamp.insert(std::make_pair(ch, -numeric_limits::max())); + triggerTimeStamp[ch] = ofGetElapsedTimef(); + } + } + } +} \ No newline at end of file diff --git a/of_v0.11.0/apps/myApps/OSC2UltraControl/src/ofApp.h b/of_v0.11.0/apps/myApps/OSC2UltraControl/src/ofApp.h new file mode 100644 index 0000000..2c48562 --- /dev/null +++ b/of_v0.11.0/apps/myApps/OSC2UltraControl/src/ofApp.h @@ -0,0 +1,36 @@ +#pragma once + +#include "ofMain.h" +#include "ofxUCSetter.h" +#include "ofxImGuiParameter.h" +#include "imgui.h" +#include "ofxOscReceiver.h" +#include +class ofApp : public ofBaseApp{ + public: + void setup(); + void update(); + void draw(); + + void keyPressed(int key); + void keyReleased(int key); + void mouseMoved(int x, int y); + void mouseDragged(int x, int y, int button); + void mousePressed(int x, int y, int button); + void mouseReleased(int x, int y, int button); + void mouseEntered(int x, int y); + void mouseExited(int x, int y); + void windowResized(int w, int h); + void dragEvent(ofDragInfo dragInfo); + void gotMessage(ofMessage msg); + void receiveMessage(); + ofParameter triggerDuration = 0.2f; + SetterRef m_sp_uc_setter; + ParamGroupRef m_sp_param_group; + ofxImGuiParameter m_imgui_parameter; + ImGuiContext* ctx = nullptr; + void SetContex(); + ofxOscReceiver osc_receiver; + + std::map triggerTimeStamp; +}; diff --git a/of_v0.11.0/apps/myApps/ucEmptyExample b/of_v0.11.0/apps/myApps/ucEmptyExample new file mode 160000 index 0000000..338c4ac --- /dev/null +++ b/of_v0.11.0/apps/myApps/ucEmptyExample @@ -0,0 +1 @@ +Subproject commit 338c4ac9173a4b121535de8190f4704448fac518 diff --git a/of_v0.11.0/uc_libs/lib_UltraControls b/of_v0.11.0/uc_libs/lib_UltraControls new file mode 160000 index 0000000..e43d3c3 --- /dev/null +++ b/of_v0.11.0/uc_libs/lib_UltraControls @@ -0,0 +1 @@ +Subproject commit e43d3c3ee6f753226050e62cb5c999df16704f39