32 changed files with 4626 additions and 0 deletions
@ -0,0 +1 @@ |
|||||
|
*.mp4 filter=lfs diff=lfs merge=lfs -text |
@ -0,0 +1,13 @@ |
|||||
|
# Attempt to load a config.make file.
|
||||
|
# If none is found, project defaults in config.project.make will be used.
|
||||
|
ifneq ($(wildcard config.make),) |
||||
|
include config.make |
||||
|
endif |
||||
|
|
||||
|
# make sure the the OF_ROOT location is defined
|
||||
|
ifndef OF_ROOT |
||||
|
OF_ROOT=$(realpath ../../..) |
||||
|
endif |
||||
|
|
||||
|
# call the project makefile!
|
||||
|
include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk |
@ -0,0 +1,17 @@ |
|||||
|
//THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. |
||||
|
//THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED |
||||
|
OF_PATH = ../../.. |
||||
|
|
||||
|
//THIS HAS ALL THE HEADER AND LIBS FOR OF CORE |
||||
|
#include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" |
||||
|
|
||||
|
//ICONS - NEW IN 0072 |
||||
|
ICON_NAME_DEBUG = icon-debug.icns |
||||
|
ICON_NAME_RELEASE = icon.icns |
||||
|
ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/ |
||||
|
|
||||
|
//IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to: |
||||
|
//ICON_FILE_PATH = bin/data/ |
||||
|
|
||||
|
OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS) |
||||
|
HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) |
@ -0,0 +1,5 @@ |
|||||
|
ofxGui |
||||
|
ofxJSON |
||||
|
ofxNetwork |
||||
|
ofxPiMapper |
||||
|
ofxXmlSettings |
@ -0,0 +1,4 @@ |
|||||
|
{ |
||||
|
"ip":"127.0.0.1", |
||||
|
"port":9999 |
||||
|
} |
@ -0,0 +1,36 @@ |
|||||
|
<surfaces> |
||||
|
<surface type="0"> |
||||
|
<vertices> |
||||
|
<vertex> |
||||
|
<x>640.000000000</x> |
||||
|
<y>50.000000000</y> |
||||
|
</vertex> |
||||
|
<vertex> |
||||
|
<x>1230.000000000</x> |
||||
|
<y>750.000000000</y> |
||||
|
</vertex> |
||||
|
<vertex> |
||||
|
<x>50.000000000</x> |
||||
|
<y>750.000000000</y> |
||||
|
</vertex> |
||||
|
</vertices> |
||||
|
<texCoords> |
||||
|
<texCoord> |
||||
|
<x>0.500000000</x> |
||||
|
<y>0.000000000</y> |
||||
|
</texCoord> |
||||
|
<texCoord> |
||||
|
<x>1.000000000</x> |
||||
|
<y>1.000000000</y> |
||||
|
</texCoord> |
||||
|
<texCoord> |
||||
|
<x>0.000000000</x> |
||||
|
<y>1.000000000</y> |
||||
|
</texCoord> |
||||
|
</texCoords> |
||||
|
<source> |
||||
|
<source-type>video</source-type> |
||||
|
<source-name>gene-nsynthesis-loop-b.mp4</source-name> |
||||
|
</source> |
||||
|
</surface> |
||||
|
</surfaces> |
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:2da7b85225116bee7e1ae5275f58cca7684c2a5d013b97bdd46955c2c418a812 |
||||
|
size 2045077 |
@ -0,0 +1,142 @@ |
|||||
|
################################################################################ |
||||
|
# CONFIGURE PROJECT MAKEFILE (optional) |
||||
|
# This file is where we make project specific configurations. |
||||
|
################################################################################ |
||||
|
|
||||
|
################################################################################ |
||||
|
# OF ROOT |
||||
|
# The location of your root openFrameworks installation |
||||
|
# (default) OF_ROOT = ../../.. |
||||
|
################################################################################ |
||||
|
# OF_ROOT = ../../.. |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT ROOT |
||||
|
# The location of the project - a starting place for searching for files |
||||
|
# (default) PROJECT_ROOT = . (this directory) |
||||
|
# |
||||
|
################################################################################ |
||||
|
# PROJECT_ROOT = . |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT SPECIFIC CHECKS |
||||
|
# This is a project defined section to create internal makefile flags to |
||||
|
# conditionally enable or disable the addition of various features within |
||||
|
# this makefile. For instance, if you want to make changes based on whether |
||||
|
# GTK is installed, one might test that here and create a variable to check. |
||||
|
################################################################################ |
||||
|
# None |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT EXTERNAL SOURCE PATHS |
||||
|
# These are fully qualified paths that are not within the PROJECT_ROOT folder. |
||||
|
# Like source folders in the PROJECT_ROOT, these paths are subject to |
||||
|
# exlclusion via the PROJECT_EXLCUSIONS list. |
||||
|
# |
||||
|
# (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank) |
||||
|
# |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
# PROJECT_EXTERNAL_SOURCE_PATHS = |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT EXCLUSIONS |
||||
|
# These makefiles assume that all folders in your current project directory |
||||
|
# and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations |
||||
|
# to look for source code. The any folders or files that match any of the |
||||
|
# items in the PROJECT_EXCLUSIONS list below will be ignored. |
||||
|
# |
||||
|
# Each item in the PROJECT_EXCLUSIONS list will be treated as a complete |
||||
|
# string unless teh user adds a wildcard (%) operator to match subdirectories. |
||||
|
# GNU make only allows one wildcard for matching. The second wildcard (%) is |
||||
|
# treated literally. |
||||
|
# |
||||
|
# (default) PROJECT_EXCLUSIONS = (blank) |
||||
|
# |
||||
|
# Will automatically exclude the following: |
||||
|
# |
||||
|
# $(PROJECT_ROOT)/bin% |
||||
|
# $(PROJECT_ROOT)/obj% |
||||
|
# $(PROJECT_ROOT)/%.xcodeproj |
||||
|
# |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
# PROJECT_EXCLUSIONS = |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT LINKER FLAGS |
||||
|
# These flags will be sent to the linker when compiling the executable. |
||||
|
# |
||||
|
# (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs |
||||
|
# |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
|
||||
|
# Currently, shared libraries that are needed are copied to the |
||||
|
# $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to |
||||
|
# add a runtime path to search for those shared libraries, since they aren't |
||||
|
# incorporated directly into the final executable application binary. |
||||
|
# TODO: should this be a default setting? |
||||
|
# PROJECT_LDFLAGS=-Wl,-rpath=./libs |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT DEFINES |
||||
|
# Create a space-delimited list of DEFINES. The list will be converted into |
||||
|
# CFLAGS with the "-D" flag later in the makefile. |
||||
|
# |
||||
|
# (default) PROJECT_DEFINES = (blank) |
||||
|
# |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
# PROJECT_DEFINES = |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT CFLAGS |
||||
|
# This is a list of fully qualified CFLAGS required when compiling for this |
||||
|
# project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS |
||||
|
# defined in your platform specific core configuration files. These flags are |
||||
|
# presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below. |
||||
|
# |
||||
|
# (default) PROJECT_CFLAGS = (blank) |
||||
|
# |
||||
|
# Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in |
||||
|
# your platform specific configuration file will be applied by default and |
||||
|
# further flags here may not be needed. |
||||
|
# |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
# PROJECT_CFLAGS = |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT OPTIMIZATION CFLAGS |
||||
|
# These are lists of CFLAGS that are target-specific. While any flags could |
||||
|
# be conditionally added, they are usually limited to optimization flags. |
||||
|
# These flags are added BEFORE the PROJECT_CFLAGS. |
||||
|
# |
||||
|
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets. |
||||
|
# |
||||
|
# (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank) |
||||
|
# |
||||
|
# PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets. |
||||
|
# |
||||
|
# (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank) |
||||
|
# |
||||
|
# Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the |
||||
|
# PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration |
||||
|
# file will be applied by default and further optimization flags here may not |
||||
|
# be needed. |
||||
|
# |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE = |
||||
|
# PROJECT_OPTIMIZATION_CFLAGS_DEBUG = |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT COMPILERS |
||||
|
# Custom compilers can be set for CC and CXX |
||||
|
# (default) PROJECT_CXX = (blank) |
||||
|
# (default) PROJECT_CC = (blank) |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
# PROJECT_CXX = |
||||
|
# PROJECT_CC = |
File diff suppressed because it is too large
@ -0,0 +1,93 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<Scheme |
||||
|
LastUpgradeVersion = "0600" |
||||
|
version = "1.3"> |
||||
|
<BuildAction |
||||
|
parallelizeBuildables = "YES" |
||||
|
buildImplicitDependencies = "YES"> |
||||
|
<BuildActionEntries> |
||||
|
<BuildActionEntry |
||||
|
buildForTesting = "YES" |
||||
|
buildForRunning = "YES" |
||||
|
buildForProfiling = "YES" |
||||
|
buildForArchiving = "YES" |
||||
|
buildForAnalyzing = "YES"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-client.app" |
||||
|
BlueprintName = "example_remote-client" |
||||
|
ReferencedContainer = "container:example_remote-client.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildActionEntry> |
||||
|
</BuildActionEntries> |
||||
|
</BuildAction> |
||||
|
<TestAction |
||||
|
buildConfiguration = "Debug" |
||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
|
language = "" |
||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||
|
<Testables> |
||||
|
</Testables> |
||||
|
<MacroExpansion> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-client.app" |
||||
|
BlueprintName = "example_remote-client" |
||||
|
ReferencedContainer = "container:example_remote-client.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</MacroExpansion> |
||||
|
<AdditionalOptions> |
||||
|
</AdditionalOptions> |
||||
|
</TestAction> |
||||
|
<LaunchAction |
||||
|
buildConfiguration = "Debug" |
||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
|
language = "" |
||||
|
launchStyle = "0" |
||||
|
useCustomWorkingDirectory = "NO" |
||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||
|
debugDocumentVersioning = "YES" |
||||
|
debugServiceExtension = "internal" |
||||
|
allowLocationSimulation = "YES"> |
||||
|
<BuildableProductRunnable |
||||
|
runnableDebuggingMode = "0"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-client.app" |
||||
|
BlueprintName = "example_remote-client" |
||||
|
ReferencedContainer = "container:example_remote-client.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildableProductRunnable> |
||||
|
<AdditionalOptions> |
||||
|
</AdditionalOptions> |
||||
|
</LaunchAction> |
||||
|
<ProfileAction |
||||
|
buildConfiguration = "Debug" |
||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
|
savedToolIdentifier = "" |
||||
|
useCustomWorkingDirectory = "NO" |
||||
|
debugDocumentVersioning = "YES"> |
||||
|
<BuildableProductRunnable |
||||
|
runnableDebuggingMode = "0"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-client.app" |
||||
|
BlueprintName = "example_remote-client" |
||||
|
ReferencedContainer = "container:example_remote-client.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildableProductRunnable> |
||||
|
</ProfileAction> |
||||
|
<AnalyzeAction |
||||
|
buildConfiguration = "Debug"> |
||||
|
</AnalyzeAction> |
||||
|
<ArchiveAction |
||||
|
buildConfiguration = "Debug" |
||||
|
revealArchiveInOrganizer = "YES"> |
||||
|
</ArchiveAction> |
||||
|
</Scheme> |
@ -0,0 +1,93 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<Scheme |
||||
|
LastUpgradeVersion = "0600" |
||||
|
version = "1.3"> |
||||
|
<BuildAction |
||||
|
parallelizeBuildables = "YES" |
||||
|
buildImplicitDependencies = "YES"> |
||||
|
<BuildActionEntries> |
||||
|
<BuildActionEntry |
||||
|
buildForTesting = "YES" |
||||
|
buildForRunning = "YES" |
||||
|
buildForProfiling = "YES" |
||||
|
buildForArchiving = "YES" |
||||
|
buildForAnalyzing = "YES"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-client.app" |
||||
|
BlueprintName = "example_remote-client" |
||||
|
ReferencedContainer = "container:example_remote-client.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildActionEntry> |
||||
|
</BuildActionEntries> |
||||
|
</BuildAction> |
||||
|
<TestAction |
||||
|
buildConfiguration = "Release" |
||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
|
language = "" |
||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||
|
<Testables> |
||||
|
</Testables> |
||||
|
<MacroExpansion> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-client.app" |
||||
|
BlueprintName = "example_remote-client" |
||||
|
ReferencedContainer = "container:example_remote-client.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</MacroExpansion> |
||||
|
<AdditionalOptions> |
||||
|
</AdditionalOptions> |
||||
|
</TestAction> |
||||
|
<LaunchAction |
||||
|
buildConfiguration = "Release" |
||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
|
language = "" |
||||
|
launchStyle = "0" |
||||
|
useCustomWorkingDirectory = "NO" |
||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||
|
debugDocumentVersioning = "YES" |
||||
|
debugServiceExtension = "internal" |
||||
|
allowLocationSimulation = "YES"> |
||||
|
<BuildableProductRunnable |
||||
|
runnableDebuggingMode = "0"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-client.app" |
||||
|
BlueprintName = "example_remote-client" |
||||
|
ReferencedContainer = "container:example_remote-client.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildableProductRunnable> |
||||
|
<AdditionalOptions> |
||||
|
</AdditionalOptions> |
||||
|
</LaunchAction> |
||||
|
<ProfileAction |
||||
|
buildConfiguration = "Release" |
||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
|
savedToolIdentifier = "" |
||||
|
useCustomWorkingDirectory = "NO" |
||||
|
debugDocumentVersioning = "YES"> |
||||
|
<BuildableProductRunnable |
||||
|
runnableDebuggingMode = "0"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-client.app" |
||||
|
BlueprintName = "example_remote-client" |
||||
|
ReferencedContainer = "container:example_remote-client.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildableProductRunnable> |
||||
|
</ProfileAction> |
||||
|
<AnalyzeAction |
||||
|
buildConfiguration = "Release"> |
||||
|
</AnalyzeAction> |
||||
|
<ArchiveAction |
||||
|
buildConfiguration = "Release" |
||||
|
revealArchiveInOrganizer = "YES"> |
||||
|
</ArchiveAction> |
||||
|
</Scheme> |
@ -0,0 +1,22 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||
|
<plist version="1.0"> |
||||
|
<dict> |
||||
|
<key>CFBundleDevelopmentRegion</key> |
||||
|
<string>English</string> |
||||
|
<key>CFBundleExecutable</key> |
||||
|
<string>${EXECUTABLE_NAME}</string> |
||||
|
<key>CFBundleIdentifier</key> |
||||
|
<string>cc.openFrameworks.ofapp</string> |
||||
|
<key>CFBundleInfoDictionaryVersion</key> |
||||
|
<string>6.0</string> |
||||
|
<key>CFBundlePackageType</key> |
||||
|
<string>APPL</string> |
||||
|
<key>CFBundleSignature</key> |
||||
|
<string>????</string> |
||||
|
<key>CFBundleVersion</key> |
||||
|
<string>1.0</string> |
||||
|
<key>CFBundleIconFile</key> |
||||
|
<string>${ICON}</string> |
||||
|
</dict> |
||||
|
</plist> |
@ -0,0 +1,46 @@ |
|||||
|
#include "TCPClient.h" |
||||
|
|
||||
|
shared_ptr<TCPClient> TCPClient::_instance = 0; |
||||
|
|
||||
|
shared_ptr<TCPClient> TCPClient::instance(){ |
||||
|
if(_instance == 0){ |
||||
|
_instance = shared_ptr<TCPClient>(new TCPClient); |
||||
|
} |
||||
|
return _instance; |
||||
|
} |
||||
|
|
||||
|
TCPClient::TCPClient(){ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
void TCPClient::setup(string ip, int port){ |
||||
|
_tcpClient.setup(ip, port); |
||||
|
} |
||||
|
|
||||
|
void TCPClient::update(){ |
||||
|
if(_tcpClient.isConnected()){ |
||||
|
string rx = _tcpClient.receive(); |
||||
|
if(rx.length() > 0){ |
||||
|
ofxJSONElement json; |
||||
|
json["event"] = "received"; |
||||
|
json["data"] = rx; |
||||
|
|
||||
|
ofMessage m(json.getRawString()); |
||||
|
ofSendMessage(m); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void TCPClient::draw(){ |
||||
|
if(_tcpClient.isConnected()){ |
||||
|
ofSetColor(0, 255, 0); |
||||
|
ofPushMatrix(); |
||||
|
ofTranslate(10, 10); |
||||
|
ofDrawRectangle(0, 0, 10, 10); |
||||
|
ofPopMatrix(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void TCPClient::send(string message){ |
||||
|
_tcpClient.send(message); |
||||
|
} |
@ -0,0 +1,22 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include "ofMain.h" |
||||
|
#include "ofxNetwork.h" |
||||
|
#include "ofxJSONElement.h" |
||||
|
|
||||
|
class TCPClient{ |
||||
|
public: |
||||
|
static shared_ptr<TCPClient> instance(); |
||||
|
|
||||
|
void setup(string ip, int port); |
||||
|
void update(); |
||||
|
void draw(); |
||||
|
|
||||
|
void send(string message); |
||||
|
|
||||
|
private: |
||||
|
TCPClient(); |
||||
|
static shared_ptr<TCPClient> _instance; |
||||
|
|
||||
|
ofxTCPClient _tcpClient; |
||||
|
}; |
@ -0,0 +1,7 @@ |
|||||
|
#include "ofMain.h" |
||||
|
#include "ofApp.h" |
||||
|
|
||||
|
int main(){ |
||||
|
ofSetupOpenGL(1280, 800, OF_WINDOW); |
||||
|
ofRunApp(new ofApp()); |
||||
|
} |
@ -0,0 +1,109 @@ |
|||||
|
#include "ofApp.h" |
||||
|
|
||||
|
void ofApp::setup(){ |
||||
|
ofBackground(0); |
||||
|
|
||||
|
isMapperSetup = false; |
||||
|
|
||||
|
// Set IP address of your RasPi in data/config.json
|
||||
|
ofxJSONElement json; |
||||
|
json.open("config.json"); |
||||
|
TCPClient::instance()->setup(json["ip"].asString(), json["port"].asInt()); |
||||
|
} |
||||
|
|
||||
|
void ofApp::update(){ |
||||
|
TCPClient::instance()->update(); |
||||
|
if(isMapperSetup){ |
||||
|
mapper.update(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void ofApp::draw(){ |
||||
|
TCPClient::instance()->draw(); |
||||
|
if(isMapperSetup){ |
||||
|
mapper.draw(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// This is where we get configuration from the server part of this.
|
||||
|
void ofApp::gotMessage(ofMessage m){ |
||||
|
ofxJSONElement json; |
||||
|
bool ok = json.parse(m.message); |
||||
|
if(ok){ |
||||
|
if(json["event"] == "received"){ |
||||
|
std::string buffer = json["data"].asString(); |
||||
|
ofxXmlSettings xml; |
||||
|
xml.loadFromBuffer(buffer); |
||||
|
xml.save("ofxpimapper.xml"); |
||||
|
|
||||
|
mapper.setup(); |
||||
|
isMapperSetup = true; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void ofApp::keyPressed(int key){ |
||||
|
if(isMapperSetup){ |
||||
|
mapper.keyPressed(key); |
||||
|
|
||||
|
ofxJSONElement json; |
||||
|
json["event"] = "keyPressed"; |
||||
|
json["key"] = key; |
||||
|
|
||||
|
TCPClient::instance()->send(json.getRawString()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void ofApp::keyReleased(int key){ |
||||
|
if(isMapperSetup){ |
||||
|
mapper.keyReleased(key); |
||||
|
|
||||
|
ofxJSONElement json; |
||||
|
json["event"] = "keyReleased"; |
||||
|
json["key"] = key; |
||||
|
|
||||
|
TCPClient::instance()->send(json.getRawString()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void ofApp::mousePressed(int x, int y, int button){ |
||||
|
if(isMapperSetup){ |
||||
|
mapper.mousePressed(x, y, button); |
||||
|
|
||||
|
ofxJSONElement json; |
||||
|
json["event"] = "mousePressed"; |
||||
|
json["x"] = x; |
||||
|
json["y"] = y; |
||||
|
json["button"] = button; |
||||
|
|
||||
|
TCPClient::instance()->send(json.getRawString()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void ofApp::mouseReleased(int x, int y, int button){ |
||||
|
if(isMapperSetup){ |
||||
|
mapper.mouseReleased(x, y, button); |
||||
|
|
||||
|
ofxJSONElement json; |
||||
|
json["event"] = "mouseReleased"; |
||||
|
json["x"] = x; |
||||
|
json["y"] = y; |
||||
|
json["button"] = button; |
||||
|
|
||||
|
TCPClient::instance()->send(json.getRawString()); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void ofApp::mouseDragged(int x, int y, int button){ |
||||
|
if(isMapperSetup){ |
||||
|
mapper.mouseDragged(x, y, button); |
||||
|
|
||||
|
ofxJSONElement json; |
||||
|
json["event"] = "mouseDragged"; |
||||
|
json["x"] = x; |
||||
|
json["y"] = y; |
||||
|
json["button"] = button; |
||||
|
|
||||
|
TCPClient::instance()->send(json.getRawString()); |
||||
|
} |
||||
|
} |
@ -0,0 +1,24 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include "ofMain.h" |
||||
|
#include "TCPClient.h" |
||||
|
#include "ofxPiMapper.h" |
||||
|
#include "ofxJSONElement.h" |
||||
|
|
||||
|
class ofApp : public ofBaseApp{ |
||||
|
public: |
||||
|
void setup(); |
||||
|
void update(); |
||||
|
void draw(); |
||||
|
|
||||
|
void gotMessage(ofMessage m); |
||||
|
|
||||
|
void keyPressed(int key); |
||||
|
void keyReleased(int key); |
||||
|
void mousePressed(int x, int y, int button); |
||||
|
void mouseReleased(int x, int y, int button); |
||||
|
void mouseDragged(int x, int y, int button); |
||||
|
|
||||
|
ofxPiMapper mapper; |
||||
|
bool isMapperSetup; |
||||
|
}; |
@ -0,0 +1,13 @@ |
|||||
|
# Attempt to load a config.make file.
|
||||
|
# If none is found, project defaults in config.project.make will be used.
|
||||
|
ifneq ($(wildcard config.make),) |
||||
|
include config.make |
||||
|
endif |
||||
|
|
||||
|
# make sure the the OF_ROOT location is defined
|
||||
|
ifndef OF_ROOT |
||||
|
OF_ROOT=$(realpath ../../..) |
||||
|
endif |
||||
|
|
||||
|
# call the project makefile!
|
||||
|
include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk |
@ -0,0 +1,17 @@ |
|||||
|
//THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. |
||||
|
//THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED |
||||
|
OF_PATH = ../../.. |
||||
|
|
||||
|
//THIS HAS ALL THE HEADER AND LIBS FOR OF CORE |
||||
|
#include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" |
||||
|
|
||||
|
//ICONS - NEW IN 0072 |
||||
|
ICON_NAME_DEBUG = icon-debug.icns |
||||
|
ICON_NAME_RELEASE = icon.icns |
||||
|
ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/ |
||||
|
|
||||
|
//IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to: |
||||
|
//ICON_FILE_PATH = bin/data/ |
||||
|
|
||||
|
OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS) |
||||
|
HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) |
@ -0,0 +1,6 @@ |
|||||
|
ofxGui |
||||
|
ofxJSON |
||||
|
ofxNetwork |
||||
|
ofxOpenCv |
||||
|
ofxPiMapper |
||||
|
ofxXmlSettings |
@ -0,0 +1,36 @@ |
|||||
|
<surfaces> |
||||
|
<surface type="0"> |
||||
|
<vertices> |
||||
|
<vertex> |
||||
|
<x>640.000000000</x> |
||||
|
<y>50.000000000</y> |
||||
|
</vertex> |
||||
|
<vertex> |
||||
|
<x>1230.000000000</x> |
||||
|
<y>750.000000000</y> |
||||
|
</vertex> |
||||
|
<vertex> |
||||
|
<x>50.000000000</x> |
||||
|
<y>750.000000000</y> |
||||
|
</vertex> |
||||
|
</vertices> |
||||
|
<texCoords> |
||||
|
<texCoord> |
||||
|
<x>0.500000000</x> |
||||
|
<y>0.000000000</y> |
||||
|
</texCoord> |
||||
|
<texCoord> |
||||
|
<x>1.000000000</x> |
||||
|
<y>1.000000000</y> |
||||
|
</texCoord> |
||||
|
<texCoord> |
||||
|
<x>0.000000000</x> |
||||
|
<y>1.000000000</y> |
||||
|
</texCoord> |
||||
|
</texCoords> |
||||
|
<source> |
||||
|
<source-type>video</source-type> |
||||
|
<source-name>gene-nsynthesis-loop-b.mp4</source-name> |
||||
|
</source> |
||||
|
</surface> |
||||
|
</surfaces> |
@ -0,0 +1,3 @@ |
|||||
|
version https://git-lfs.github.com/spec/v1 |
||||
|
oid sha256:2da7b85225116bee7e1ae5275f58cca7684c2a5d013b97bdd46955c2c418a812 |
||||
|
size 2045077 |
@ -0,0 +1,142 @@ |
|||||
|
################################################################################ |
||||
|
# CONFIGURE PROJECT MAKEFILE (optional) |
||||
|
# This file is where we make project specific configurations. |
||||
|
################################################################################ |
||||
|
|
||||
|
################################################################################ |
||||
|
# OF ROOT |
||||
|
# The location of your root openFrameworks installation |
||||
|
# (default) OF_ROOT = ../../.. |
||||
|
################################################################################ |
||||
|
# OF_ROOT = ../../.. |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT ROOT |
||||
|
# The location of the project - a starting place for searching for files |
||||
|
# (default) PROJECT_ROOT = . (this directory) |
||||
|
# |
||||
|
################################################################################ |
||||
|
# PROJECT_ROOT = . |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT SPECIFIC CHECKS |
||||
|
# This is a project defined section to create internal makefile flags to |
||||
|
# conditionally enable or disable the addition of various features within |
||||
|
# this makefile. For instance, if you want to make changes based on whether |
||||
|
# GTK is installed, one might test that here and create a variable to check. |
||||
|
################################################################################ |
||||
|
# None |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT EXTERNAL SOURCE PATHS |
||||
|
# These are fully qualified paths that are not within the PROJECT_ROOT folder. |
||||
|
# Like source folders in the PROJECT_ROOT, these paths are subject to |
||||
|
# exlclusion via the PROJECT_EXLCUSIONS list. |
||||
|
# |
||||
|
# (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank) |
||||
|
# |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
# PROJECT_EXTERNAL_SOURCE_PATHS = |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT EXCLUSIONS |
||||
|
# These makefiles assume that all folders in your current project directory |
||||
|
# and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations |
||||
|
# to look for source code. The any folders or files that match any of the |
||||
|
# items in the PROJECT_EXCLUSIONS list below will be ignored. |
||||
|
# |
||||
|
# Each item in the PROJECT_EXCLUSIONS list will be treated as a complete |
||||
|
# string unless teh user adds a wildcard (%) operator to match subdirectories. |
||||
|
# GNU make only allows one wildcard for matching. The second wildcard (%) is |
||||
|
# treated literally. |
||||
|
# |
||||
|
# (default) PROJECT_EXCLUSIONS = (blank) |
||||
|
# |
||||
|
# Will automatically exclude the following: |
||||
|
# |
||||
|
# $(PROJECT_ROOT)/bin% |
||||
|
# $(PROJECT_ROOT)/obj% |
||||
|
# $(PROJECT_ROOT)/%.xcodeproj |
||||
|
# |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
# PROJECT_EXCLUSIONS = |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT LINKER FLAGS |
||||
|
# These flags will be sent to the linker when compiling the executable. |
||||
|
# |
||||
|
# (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs |
||||
|
# |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
|
||||
|
# Currently, shared libraries that are needed are copied to the |
||||
|
# $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to |
||||
|
# add a runtime path to search for those shared libraries, since they aren't |
||||
|
# incorporated directly into the final executable application binary. |
||||
|
# TODO: should this be a default setting? |
||||
|
# PROJECT_LDFLAGS=-Wl,-rpath=./libs |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT DEFINES |
||||
|
# Create a space-delimited list of DEFINES. The list will be converted into |
||||
|
# CFLAGS with the "-D" flag later in the makefile. |
||||
|
# |
||||
|
# (default) PROJECT_DEFINES = (blank) |
||||
|
# |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
# PROJECT_DEFINES = |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT CFLAGS |
||||
|
# This is a list of fully qualified CFLAGS required when compiling for this |
||||
|
# project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS |
||||
|
# defined in your platform specific core configuration files. These flags are |
||||
|
# presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below. |
||||
|
# |
||||
|
# (default) PROJECT_CFLAGS = (blank) |
||||
|
# |
||||
|
# Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in |
||||
|
# your platform specific configuration file will be applied by default and |
||||
|
# further flags here may not be needed. |
||||
|
# |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
# PROJECT_CFLAGS = |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT OPTIMIZATION CFLAGS |
||||
|
# These are lists of CFLAGS that are target-specific. While any flags could |
||||
|
# be conditionally added, they are usually limited to optimization flags. |
||||
|
# These flags are added BEFORE the PROJECT_CFLAGS. |
||||
|
# |
||||
|
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets. |
||||
|
# |
||||
|
# (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank) |
||||
|
# |
||||
|
# PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets. |
||||
|
# |
||||
|
# (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank) |
||||
|
# |
||||
|
# Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the |
||||
|
# PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration |
||||
|
# file will be applied by default and further optimization flags here may not |
||||
|
# be needed. |
||||
|
# |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
# PROJECT_OPTIMIZATION_CFLAGS_RELEASE = |
||||
|
# PROJECT_OPTIMIZATION_CFLAGS_DEBUG = |
||||
|
|
||||
|
################################################################################ |
||||
|
# PROJECT COMPILERS |
||||
|
# Custom compilers can be set for CC and CXX |
||||
|
# (default) PROJECT_CXX = (blank) |
||||
|
# (default) PROJECT_CC = (blank) |
||||
|
# Note: Leave a leading space when adding list items with the += operator |
||||
|
################################################################################ |
||||
|
# PROJECT_CXX = |
||||
|
# PROJECT_CC = |
File diff suppressed because it is too large
@ -0,0 +1,93 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<Scheme |
||||
|
LastUpgradeVersion = "0600" |
||||
|
version = "1.3"> |
||||
|
<BuildAction |
||||
|
parallelizeBuildables = "YES" |
||||
|
buildImplicitDependencies = "YES"> |
||||
|
<BuildActionEntries> |
||||
|
<BuildActionEntry |
||||
|
buildForTesting = "YES" |
||||
|
buildForRunning = "YES" |
||||
|
buildForProfiling = "YES" |
||||
|
buildForArchiving = "YES" |
||||
|
buildForAnalyzing = "YES"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-server.app" |
||||
|
BlueprintName = "example_remote-server" |
||||
|
ReferencedContainer = "container:example_remote-server.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildActionEntry> |
||||
|
</BuildActionEntries> |
||||
|
</BuildAction> |
||||
|
<TestAction |
||||
|
buildConfiguration = "Debug" |
||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
|
language = "" |
||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||
|
<Testables> |
||||
|
</Testables> |
||||
|
<MacroExpansion> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-server.app" |
||||
|
BlueprintName = "example_remote-server" |
||||
|
ReferencedContainer = "container:example_remote-server.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</MacroExpansion> |
||||
|
<AdditionalOptions> |
||||
|
</AdditionalOptions> |
||||
|
</TestAction> |
||||
|
<LaunchAction |
||||
|
buildConfiguration = "Debug" |
||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
|
language = "" |
||||
|
launchStyle = "0" |
||||
|
useCustomWorkingDirectory = "NO" |
||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||
|
debugDocumentVersioning = "YES" |
||||
|
debugServiceExtension = "internal" |
||||
|
allowLocationSimulation = "YES"> |
||||
|
<BuildableProductRunnable |
||||
|
runnableDebuggingMode = "0"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-server.app" |
||||
|
BlueprintName = "example_remote-server" |
||||
|
ReferencedContainer = "container:example_remote-server.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildableProductRunnable> |
||||
|
<AdditionalOptions> |
||||
|
</AdditionalOptions> |
||||
|
</LaunchAction> |
||||
|
<ProfileAction |
||||
|
buildConfiguration = "Debug" |
||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
|
savedToolIdentifier = "" |
||||
|
useCustomWorkingDirectory = "NO" |
||||
|
debugDocumentVersioning = "YES"> |
||||
|
<BuildableProductRunnable |
||||
|
runnableDebuggingMode = "0"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-server.app" |
||||
|
BlueprintName = "example_remote-server" |
||||
|
ReferencedContainer = "container:example_remote-server.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildableProductRunnable> |
||||
|
</ProfileAction> |
||||
|
<AnalyzeAction |
||||
|
buildConfiguration = "Debug"> |
||||
|
</AnalyzeAction> |
||||
|
<ArchiveAction |
||||
|
buildConfiguration = "Debug" |
||||
|
revealArchiveInOrganizer = "YES"> |
||||
|
</ArchiveAction> |
||||
|
</Scheme> |
@ -0,0 +1,93 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<Scheme |
||||
|
LastUpgradeVersion = "0600" |
||||
|
version = "1.3"> |
||||
|
<BuildAction |
||||
|
parallelizeBuildables = "YES" |
||||
|
buildImplicitDependencies = "YES"> |
||||
|
<BuildActionEntries> |
||||
|
<BuildActionEntry |
||||
|
buildForTesting = "YES" |
||||
|
buildForRunning = "YES" |
||||
|
buildForProfiling = "YES" |
||||
|
buildForArchiving = "YES" |
||||
|
buildForAnalyzing = "YES"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-server.app" |
||||
|
BlueprintName = "example_remote-server" |
||||
|
ReferencedContainer = "container:example_remote-server.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildActionEntry> |
||||
|
</BuildActionEntries> |
||||
|
</BuildAction> |
||||
|
<TestAction |
||||
|
buildConfiguration = "Release" |
||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
|
language = "" |
||||
|
shouldUseLaunchSchemeArgsEnv = "YES"> |
||||
|
<Testables> |
||||
|
</Testables> |
||||
|
<MacroExpansion> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-server.app" |
||||
|
BlueprintName = "example_remote-server" |
||||
|
ReferencedContainer = "container:example_remote-server.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</MacroExpansion> |
||||
|
<AdditionalOptions> |
||||
|
</AdditionalOptions> |
||||
|
</TestAction> |
||||
|
<LaunchAction |
||||
|
buildConfiguration = "Release" |
||||
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" |
||||
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" |
||||
|
language = "" |
||||
|
launchStyle = "0" |
||||
|
useCustomWorkingDirectory = "NO" |
||||
|
ignoresPersistentStateOnLaunch = "NO" |
||||
|
debugDocumentVersioning = "YES" |
||||
|
debugServiceExtension = "internal" |
||||
|
allowLocationSimulation = "YES"> |
||||
|
<BuildableProductRunnable |
||||
|
runnableDebuggingMode = "0"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-server.app" |
||||
|
BlueprintName = "example_remote-server" |
||||
|
ReferencedContainer = "container:example_remote-server.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildableProductRunnable> |
||||
|
<AdditionalOptions> |
||||
|
</AdditionalOptions> |
||||
|
</LaunchAction> |
||||
|
<ProfileAction |
||||
|
buildConfiguration = "Release" |
||||
|
shouldUseLaunchSchemeArgsEnv = "YES" |
||||
|
savedToolIdentifier = "" |
||||
|
useCustomWorkingDirectory = "NO" |
||||
|
debugDocumentVersioning = "YES"> |
||||
|
<BuildableProductRunnable |
||||
|
runnableDebuggingMode = "0"> |
||||
|
<BuildableReference |
||||
|
BuildableIdentifier = "primary" |
||||
|
BlueprintIdentifier = "E4B69B5A0A3A1756003C02F2" |
||||
|
BuildableName = "example_remote-server.app" |
||||
|
BlueprintName = "example_remote-server" |
||||
|
ReferencedContainer = "container:example_remote-server.xcodeproj"> |
||||
|
</BuildableReference> |
||||
|
</BuildableProductRunnable> |
||||
|
</ProfileAction> |
||||
|
<AnalyzeAction |
||||
|
buildConfiguration = "Release"> |
||||
|
</AnalyzeAction> |
||||
|
<ArchiveAction |
||||
|
buildConfiguration = "Release" |
||||
|
revealArchiveInOrganizer = "YES"> |
||||
|
</ArchiveAction> |
||||
|
</Scheme> |
@ -0,0 +1,22 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
||||
|
<plist version="1.0"> |
||||
|
<dict> |
||||
|
<key>CFBundleDevelopmentRegion</key> |
||||
|
<string>English</string> |
||||
|
<key>CFBundleExecutable</key> |
||||
|
<string>${EXECUTABLE_NAME}</string> |
||||
|
<key>CFBundleIdentifier</key> |
||||
|
<string>cc.openFrameworks.ofapp</string> |
||||
|
<key>CFBundleInfoDictionaryVersion</key> |
||||
|
<string>6.0</string> |
||||
|
<key>CFBundlePackageType</key> |
||||
|
<string>APPL</string> |
||||
|
<key>CFBundleSignature</key> |
||||
|
<string>????</string> |
||||
|
<key>CFBundleVersion</key> |
||||
|
<string>1.0</string> |
||||
|
<key>CFBundleIconFile</key> |
||||
|
<string>${ICON}</string> |
||||
|
</dict> |
||||
|
</plist> |
@ -0,0 +1,93 @@ |
|||||
|
#include "TCPServer.h" |
||||
|
|
||||
|
shared_ptr<TCPServer> TCPServer::_instance = 0; |
||||
|
|
||||
|
shared_ptr<TCPServer> TCPServer::instance(){ |
||||
|
if(_instance == 0){ |
||||
|
_instance = shared_ptr<TCPServer>(new TCPServer); |
||||
|
} |
||||
|
return _instance; |
||||
|
} |
||||
|
|
||||
|
TCPServer::TCPServer(){ |
||||
|
std::cout << "TCPServer initialized" << std::endl; |
||||
|
} |
||||
|
|
||||
|
void TCPServer::setup(int port){ |
||||
|
_tcpServer.setup(port); |
||||
|
} |
||||
|
|
||||
|
void TCPServer::update(){ |
||||
|
int numClients = _tcpServer.getLastID(); |
||||
|
for(auto i = 0; i < numClients; ++i){ |
||||
|
if(_tcpServer.isClientConnected(i)){ |
||||
|
|
||||
|
// Notify application when new client connects
|
||||
|
if(!_tcpConnections[i]){ |
||||
|
ofxJSONElement json; |
||||
|
json["ip"] = _tcpServer.getClientIP(i); |
||||
|
json["port"] = _tcpServer.getClientPort(i); |
||||
|
json["id"] = i; |
||||
|
json["event"] = "connected"; |
||||
|
|
||||
|
ofMessage message(json.getRawString()); |
||||
|
ofSendMessage(message); |
||||
|
|
||||
|
_tcpConnections[i] = true; |
||||
|
} |
||||
|
|
||||
|
// Receive messages
|
||||
|
string rx = _tcpServer.receive(i); |
||||
|
if(rx.length() > 0){ |
||||
|
ofxJSONElement json; |
||||
|
bool ok = json.parse(rx); |
||||
|
|
||||
|
if(!ok){ |
||||
|
json["ip"] = _tcpServer.getClientIP(i); |
||||
|
json["port"] = _tcpServer.getClientPort(i); |
||||
|
json["id"] = i; |
||||
|
json["event"] = "received"; |
||||
|
json["data"] = rx; |
||||
|
} |
||||
|
|
||||
|
ofMessage message(json.getRawString()); |
||||
|
ofSendMessage(message); |
||||
|
} |
||||
|
}else{ |
||||
|
|
||||
|
// Notify application when client disconnects
|
||||
|
if(_tcpConnections[i]){ |
||||
|
ofxJSONElement json; |
||||
|
json["ip"] = _tcpServer.getClientIP(i); |
||||
|
json["port"] = _tcpServer.getClientPort(i); |
||||
|
json["id"] = i; |
||||
|
json["event"] = "disconnected"; |
||||
|
|
||||
|
ofMessage message(json.getRawString()); |
||||
|
ofSendMessage(message); |
||||
|
|
||||
|
_tcpConnections[i] = false; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void TCPServer::draw(){ |
||||
|
int numClients = _tcpServer.getLastID(); |
||||
|
int clientsConnected = 0; |
||||
|
for(auto i = 0; i < numClients; ++i){ |
||||
|
if(_tcpServer.isClientConnected(i)){ |
||||
|
ofSetColor(0, 255, 0); |
||||
|
ofPushMatrix(); |
||||
|
ofTranslate(10, 10); |
||||
|
ofDrawRectangle(clientsConnected * 20, 0, 10, 10); |
||||
|
ofPopMatrix(); |
||||
|
clientsConnected++; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void TCPServer::send(int clientID, std::string message){ |
||||
|
_tcpServer.send(clientID, message); |
||||
|
} |
||||
|
|
@ -0,0 +1,23 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include "ofMain.h" |
||||
|
#include "ofxNetwork.h" |
||||
|
#include "ofxJSONElement.h" |
||||
|
|
||||
|
class TCPServer { |
||||
|
public: |
||||
|
static shared_ptr<TCPServer> instance(); |
||||
|
|
||||
|
void setup(int port); |
||||
|
void update(); |
||||
|
void draw(); |
||||
|
|
||||
|
void send(int clientID, std::string message); |
||||
|
|
||||
|
private: |
||||
|
TCPServer(); |
||||
|
static shared_ptr<TCPServer> _instance; |
||||
|
|
||||
|
ofxTCPServer _tcpServer; |
||||
|
std::map<int, bool> _tcpConnections; |
||||
|
}; |
@ -0,0 +1,7 @@ |
|||||
|
#include "ofMain.h" |
||||
|
#include "ofApp.h" |
||||
|
|
||||
|
int main(){ |
||||
|
ofSetupOpenGL(1280, 800, OF_WINDOW); |
||||
|
ofRunApp(new ofApp()); |
||||
|
} |
@ -0,0 +1,84 @@ |
|||||
|
#include "ofApp.h" |
||||
|
|
||||
|
void ofApp::setup(){ |
||||
|
ofBackground(0); |
||||
|
mapper.setup(); |
||||
|
TCPServer::instance()->setup(9999); |
||||
|
|
||||
|
#ifdef TARGET_RASPBERRY_PI |
||||
|
ofSetFullscreen(true); |
||||
|
#endif |
||||
|
} |
||||
|
|
||||
|
void ofApp::update(){ |
||||
|
mapper.update(); |
||||
|
TCPServer::instance()->update(); |
||||
|
} |
||||
|
|
||||
|
void ofApp::draw(){ |
||||
|
mapper.draw(); |
||||
|
TCPServer::instance()->draw(); |
||||
|
} |
||||
|
|
||||
|
// Here is where we process messages received from TCPServer instance
|
||||
|
void ofApp::gotMessage(ofMessage m){ |
||||
|
std::cout << m.message << std::endl; |
||||
|
|
||||
|
ofxJSONElement json; |
||||
|
bool ok = json.parse(m.message); |
||||
|
if(ok){ |
||||
|
if(json["event"].asString() == "connected"){ |
||||
|
// Save Mapper composition and get config as string
|
||||
|
std::cout << "Sending mapper config" << std::endl; |
||||
|
mapper.saveProject(); |
||||
|
|
||||
|
ofFile file; |
||||
|
file.open(ofToDataPath("ofxpimapper.xml"), ofFile::ReadOnly, false); |
||||
|
ofBuffer buff = file.readToBuffer(); |
||||
|
string text = buff.getText(); |
||||
|
|
||||
|
TCPServer::instance()->send(json["id"].asInt(), text); |
||||
|
} |
||||
|
|
||||
|
if(json["event"].asString() == "keyPressed"){ |
||||
|
mapper.keyPressed(json["key"].asInt()); |
||||
|
} |
||||
|
|
||||
|
if(json["event"].asString() == "keyReleased"){ |
||||
|
mapper.keyReleased(json["key"].asInt()); |
||||
|
} |
||||
|
|
||||
|
if(json["event"].asString() == "mousePressed"){ |
||||
|
mapper.mousePressed(json["x"].asInt(), json["y"].asInt(), json["button"].asInt()); |
||||
|
} |
||||
|
|
||||
|
if(json["event"].asString() == "mouseReleased"){ |
||||
|
mapper.mouseReleased(json["x"].asInt(), json["y"].asInt(), json["button"].asInt()); |
||||
|
} |
||||
|
|
||||
|
if(json["event"].asString() == "mouseDragged"){ |
||||
|
mapper.mouseDragged(json["x"].asInt(), json["y"].asInt(), json["button"].asInt()); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void ofApp::keyPressed(int key){ |
||||
|
mapper.keyPressed(key); |
||||
|
} |
||||
|
|
||||
|
void ofApp::keyReleased(int key){ |
||||
|
mapper.keyReleased(key); |
||||
|
} |
||||
|
|
||||
|
void ofApp::mousePressed(int x, int y, int button){ |
||||
|
mapper.mousePressed(x, y, button); |
||||
|
} |
||||
|
|
||||
|
void ofApp::mouseReleased(int x, int y, int button){ |
||||
|
mapper.mouseReleased(x, y, button); |
||||
|
} |
||||
|
|
||||
|
void ofApp::mouseDragged(int x, int y, int button){ |
||||
|
mapper.mouseDragged(x, y, button); |
||||
|
} |
||||
|
|
@ -0,0 +1,23 @@ |
|||||
|
#pragma once |
||||
|
|
||||
|
#include "ofMain.h" |
||||
|
#include "TCPServer.h" |
||||
|
#include "ofxPiMapper.h" |
||||
|
#include "ofxJSONElement.h" |
||||
|
|
||||
|
class ofApp : public ofBaseApp{ |
||||
|
public: |
||||
|
void setup(); |
||||
|
void update(); |
||||
|
void draw(); |
||||
|
|
||||
|
void gotMessage(ofMessage m); |
||||
|
|
||||
|
void keyPressed(int key); |
||||
|
void keyReleased(int key); |
||||
|
void mousePressed(int x, int y, int button); |
||||
|
void mouseReleased(int x, int y, int button); |
||||
|
void mouseDragged(int x, int y, int button); |
||||
|
|
||||
|
ofxPiMapper mapper; |
||||
|
}; |
Loading…
Reference in new issue