├── bin └── data │ └── .gitkeep ├── addons.make ├── image └── img.png ├── AeonNodeEditor.xcodeproj ├── xcuserdata │ └── Akira.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ └── xcschememanagement.plist ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcuserdata │ │ └── Akira.xcuserdatad │ │ │ └── UserInterfaceState.xcuserstate │ └── xcshareddata │ │ └── AeonNodeEditor.xcscmblueprint ├── xcshareddata │ └── xcschemes │ │ ├── AeonNodeEditor Release.xcscheme │ │ └── AeonNodeEditor Debug.xcscheme └── project.pbxproj ├── src ├── lib │ ├── AeonKitMapper │ │ └── src │ │ │ ├── Module │ │ │ ├── Condition │ │ │ │ ├── ConditionModule.cpp │ │ │ │ ├── ConditionModule.hpp │ │ │ │ └── detail │ │ │ │ │ └── ConditionModule.hpp │ │ │ ├── Utility │ │ │ │ ├── ValueModule │ │ │ │ │ ├── ValueModule.cpp │ │ │ │ │ ├── ValueModule.hpp │ │ │ │ │ └── detail │ │ │ │ │ │ └── ValueModule.hpp │ │ │ │ ├── StringConverterModule │ │ │ │ │ ├── StringConverterModule.cpp │ │ │ │ │ ├── StringConverterModule.hpp │ │ │ │ │ └── detail │ │ │ │ │ │ └── StringConverterModule.hpp │ │ │ │ ├── CounterModule │ │ │ │ │ ├── CounterModule.hpp │ │ │ │ │ └── CounterModule.cpp │ │ │ │ └── HapticPatternGeneratorModule │ │ │ │ │ ├── HapticPatternGeneratorModule.hpp │ │ │ │ │ └── HapticPatternGeneratorModule.cpp │ │ │ ├── Hardware │ │ │ │ ├── HardwareModuleCore.cpp │ │ │ │ ├── HardwareModule.cpp │ │ │ │ ├── HardwareModuleCore.hpp │ │ │ │ ├── HardwareModule.hpp │ │ │ │ ├── DisplayModule │ │ │ │ │ ├── DisplayModule.cpp │ │ │ │ │ └── DisplayModule.hpp │ │ │ │ └── SensorModule │ │ │ │ │ ├── SensorModule.hpp │ │ │ │ │ └── SensorModule.cpp │ │ │ ├── Module.cpp │ │ │ ├── ModuleCore.cpp │ │ │ ├── ModuleCore.hpp │ │ │ ├── Module.hpp │ │ │ ├── detail │ │ │ │ └── Module.hpp │ │ │ └── Logic │ │ │ │ ├── LogicModule.hpp │ │ │ │ └── LogicModule.cpp │ │ │ ├── ModuleImporter │ │ │ ├── ModuleImporter.cpp │ │ │ └── ModuleImporter.hpp │ │ │ ├── ModuleExporter │ │ │ ├── ModuleExporter.hpp │ │ │ └── ModuleExporter.cpp │ │ │ └── AeonKitMapper.hpp │ └── AeonNode │ │ └── src │ │ ├── Node.hpp │ │ ├── Connector.hpp │ │ ├── Node.cpp │ │ └── Connector.cpp ├── main.cpp ├── ofApp.h └── ofApp.cpp ├── icon.rc ├── README.md ├── Makefile ├── Project.xcconfig ├── openFrameworks-Info.plist ├── AeonNodeEditor.vcxproj.filters ├── AeonNodeEditor.sln ├── .gitignore ├── config.make └── AeonNodeEditor.vcxproj /bin/data/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /addons.make: -------------------------------------------------------------------------------- 1 | ofxDatGui 2 | ofxHierarchy 3 | ofxSmartFont 4 | -------------------------------------------------------------------------------- /image/img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0x0c/AeonNodeEditor/HEAD/image/img.png -------------------------------------------------------------------------------- /AeonNodeEditor.xcodeproj/xcuserdata/Akira.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Condition/ConditionModule.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // ConditionModule.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #include "ConditionModule.hpp" -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Utility/ValueModule/ValueModule.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // ValueModule.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #include "ValueModule.hpp" -------------------------------------------------------------------------------- /AeonNodeEditor.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/ModuleImporter/ModuleImporter.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // ModuleImporter.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #include "ModuleImporter.hpp" 10 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Hardware/HardwareModuleCore.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // HardwareModuleCore.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #include "HardwareModuleCore.hpp" 10 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Module.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SensorModule.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/10/16. 6 | // 7 | // 8 | 9 | #include "Module.hpp" 10 | 11 | namespace AeonKitMapper { 12 | 13 | } 14 | -------------------------------------------------------------------------------- /AeonNodeEditor.xcodeproj/project.xcworkspace/xcuserdata/Akira.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/0x0c/AeonNodeEditor/HEAD/AeonNodeEditor.xcodeproj/project.xcworkspace/xcuserdata/Akira.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /icon.rc: -------------------------------------------------------------------------------- 1 | // Icon Resource Definition 2 | #define MAIN_ICON 102 3 | 4 | #if defined(_DEBUG) 5 | MAIN_ICON ICON "icon_debug.ico" 6 | #else 7 | MAIN_ICON ICON "icon.ico" 8 | #endif 9 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Hardware/HardwareModule.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // HardwareModule.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #include "HardwareModule.hpp" 10 | 11 | namespace AeonKitMapper { 12 | 13 | } -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule/StringConverterModule.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // StringConverterModule.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #include "StringConverterModule.hpp" 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AeonNodeEditor 2 | 3 | ![](https://raw.githubusercontent.com/0x0c/AeonNodeEditor/master/image/img.png) 4 | 5 | ## Dependencies 6 | - openFrameworks 0.9.0 7 | - [ofxDatGui](https://github.com/braitsch/ofxDatGui) 8 | - [thunderclap](https://github.com/0x0c/thunderclap) -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | #include "ofMain.h" 2 | #include "ofApp.h" 3 | 4 | //======================================================================== 5 | int main( ){ 6 | ofSetupOpenGL(1024, 1024, OF_WINDOW); // <-------- setup the GL context 7 | 8 | // this kicks off the running of my app 9 | // can be OF_WINDOW or OF_FULLSCREEN 10 | // pass in width and height too: 11 | ofRunApp(new ofApp()); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Attempt to load a config.make file. 2 | # If none is found, project defaults in config.project.make will be used. 3 | ifneq ($(wildcard config.make),) 4 | include config.make 5 | endif 6 | 7 | # make sure the the OF_ROOT location is defined 8 | ifndef OF_ROOT 9 | OF_ROOT=$(realpath ../../..) 10 | endif 11 | 12 | # call the project makefile! 13 | include $(OF_ROOT)/libs/openFrameworksCompiled/project/makefileCommon/compile.project.mk 14 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/ModuleCore.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // ModuleCore.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #include "ModuleCore.hpp" 10 | 11 | namespace AeonKitMapper { 12 | std::string ModuleCore::get_module_name() { 13 | return this->module_name; 14 | } 15 | 16 | ModuleCore::ModuleCore(std::string module_name, float x, float y) : AeonNode::Node({x, y, 150, 80}), module_name(module_name) {} 17 | } 18 | -------------------------------------------------------------------------------- /AeonNodeEditor.xcodeproj/xcuserdata/Akira.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SuppressBuildableAutocreation 6 | 7 | E4B69B5A0A3A1756003C02F2 8 | 9 | primary 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/ModuleExporter/ModuleExporter.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ModuleExporter.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #ifndef ModuleExporter_hpp 10 | #define ModuleExporter_hpp 11 | 12 | #include "Node.hpp" 13 | 14 | namespace AeonKitMapper { 15 | class ModuleExporter { 16 | public: 17 | static void export_module_relation(std::vector module); 18 | }; 19 | } 20 | 21 | #endif /* ModuleExporter_hpp */ 22 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Hardware/HardwareModuleCore.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // HardwareModuleCore.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #ifndef HardwareModuleCore_hpp 10 | #define HardwareModuleCore_hpp 11 | 12 | #include 13 | 14 | namespace AeonKitMapper { 15 | class HardwareModuleCore { 16 | public: 17 | virtual std::string get_device_name() = 0; 18 | virtual void set_device_name(std::string name) = 0; 19 | }; 20 | } 21 | 22 | #endif /* HardwareModuleCore_hpp */ 23 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/ModuleCore.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ModuleCore.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #ifndef ModuleCore_hpp 10 | #define ModuleCore_hpp 11 | 12 | 13 | #include 14 | #include 15 | #include "../../../AeonNode/src/Node.hpp" 16 | 17 | namespace AeonKitMapper { 18 | class ModuleCore : public AeonNode::Node { 19 | protected: 20 | std::string module_name; 21 | public: 22 | std::string get_module_name(); 23 | ModuleCore(std::string module_name, float x, float y); 24 | }; 25 | } 26 | 27 | #endif /* ModuleCore_hpp */ 28 | -------------------------------------------------------------------------------- /Project.xcconfig: -------------------------------------------------------------------------------- 1 | //THE PATH TO THE ROOT OF OUR OF PATH RELATIVE TO THIS PROJECT. 2 | //THIS NEEDS TO BE DEFINED BEFORE CoreOF.xcconfig IS INCLUDED 3 | OF_PATH = ../../.. 4 | 5 | //THIS HAS ALL THE HEADER AND LIBS FOR OF CORE 6 | #include "../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig" 7 | 8 | //ICONS - NEW IN 0072 9 | ICON_NAME_DEBUG = icon-debug.icns 10 | ICON_NAME_RELEASE = icon.icns 11 | ICON_FILE_PATH = $(OF_PATH)/libs/openFrameworksCompiled/project/osx/ 12 | 13 | //IF YOU WANT AN APP TO HAVE A CUSTOM ICON - PUT THEM IN YOUR DATA FOLDER AND CHANGE ICON_FILE_PATH to: 14 | //ICON_FILE_PATH = bin/data/ 15 | 16 | OTHER_LDFLAGS = $(OF_CORE_LIBS) $(OF_CORE_FRAMEWORKS) 17 | HEADER_SEARCH_PATHS = $(OF_CORE_HEADERS) 18 | -------------------------------------------------------------------------------- /openFrameworks-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | cc.openFrameworks.ofapp 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | APPL 15 | CFBundleSignature 16 | ???? 17 | CFBundleVersion 18 | 1.0 19 | CFBundleIconFile 20 | ${ICON} 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Utility/CounterModule/CounterModule.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // CounterModule.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #ifndef CounterModule_hpp 10 | #define CounterModule_hpp 11 | 12 | #include "../Module.hpp" 13 | 14 | namespace AeonKitMapper { 15 | class CounterModule : public Module { 16 | private: 17 | int counter; 18 | ofxDatGuiLabel *counter_label; 19 | public: 20 | CounterModule(float x, float y); 21 | virtual void received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) override; 22 | virtual int eval() override; 23 | virtual void eval_and_send() override; 24 | virtual int update_output_state() override; 25 | void increment(); 26 | void decrement(); 27 | }; 28 | } 29 | 30 | #endif /* CounterModule_hpp */ 31 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Utility/ValueModule/ValueModule.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ValueModule.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #ifndef ValueModule_hpp 10 | #define ValueModule_hpp 11 | 12 | #include "../Module.hpp" 13 | 14 | namespace AeonKitMapper { 15 | template class ValueModule : public Module { 16 | private: 17 | T value; 18 | void onSliderEvent(ofxDatGuiSliderEvent e); 19 | public: 20 | ValueModule(float x, float y); 21 | virtual void set_value(T value) { 22 | this->value = value; 23 | }; 24 | virtual void received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) override {}; 25 | virtual T eval() override; 26 | virtual void eval_and_send() override; 27 | virtual T update_output_state() override; 28 | }; 29 | } 30 | 31 | #include "detail/ValueModule.hpp" 32 | 33 | #endif /* ValueModule_hpp */ 34 | -------------------------------------------------------------------------------- /src/ofApp.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include "ofMain.h" 5 | #include "ofxDatGui.h" 6 | #include "ofxHierarchy.h" 7 | #include "AeonKitMapper.hpp" 8 | 9 | class ofApp : public ofBaseApp{ 10 | public: 11 | std::vector modules; 12 | ofxHierarchy::View view; 13 | ofxDatGui *gui; 14 | 15 | void setup(); 16 | void update(); 17 | void draw(); 18 | void keyPressed(int key); 19 | void keyReleased(int key); 20 | void mouseMoved(int x, int y ); 21 | void mouseDragged(int x, int y, int button); 22 | void mousePressed(int x, int y, int button); 23 | void mouseReleased(int x, int y, int button); 24 | void mouseEntered(int x, int y); 25 | void mouseExited(int x, int y); 26 | void windowResized(int w, int h); 27 | void dragEvent(ofDragInfo dragInfo); 28 | void gotMessage(ofMessage msg); 29 | 30 | void onExportButtonEvent(ofxDatGuiButtonEvent e); 31 | void onAddModuleButtonEvent(ofxDatGuiButtonEvent e); 32 | }; 33 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/AeonKitMapper.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // AeonKitMapper.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #ifndef AeonKitMapper_hpp 10 | #define AeonKitMapper_hpp 11 | 12 | #include "Module/Module.hpp" 13 | #include "Module/Condition/ConditionModule.hpp" 14 | #include "Module/Logic/LogicModule.hpp" 15 | #include "Module/Utility/HapticPatternGeneratorModule/HapticPatternGeneratorModule.hpp" 16 | #include "Module/Utility/CounterModule/CounterModule.hpp" 17 | #include "Module/Utility/ValueModule/ValueModule.hpp" 18 | #include "Module/Utility/StringConverterModule/StringConverterModule.hpp" 19 | #include "Module/Hardware/HardwareModule.hpp" 20 | #include "Module/Hardware/HardwareModuleCore.hpp" 21 | #include "Module/Hardware/SensorModule/SensorModule.hpp" 22 | #include "Module/Hardware/DisplayModule/DisplayModule.hpp" 23 | #include "ModuleImporter/ModuleImporter.hpp" 24 | #include "ModuleExporter/ModuleExporter.hpp" 25 | 26 | #endif /* AeonKitMapper_hpp */ 27 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Hardware/HardwareModule.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // HardwareModule.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #ifndef HardwareModule_hpp 10 | #define HardwareModule_hpp 11 | 12 | #include "../Module.hpp" 13 | #include "HardwareModuleCore.hpp" 14 | 15 | namespace AeonKitMapper { 16 | template class HardwareModule : public Module, public HardwareModuleCore { 17 | private: 18 | ofxDatGuiTextInput *device_name_input; 19 | public: 20 | virtual std::string get_device_name() override { 21 | return this->device_name_input->getText(); 22 | } 23 | 24 | virtual virtual void set_device_name(std::string name) override { 25 | this->device_name_input->setText(name); 26 | } 27 | 28 | HardwareModule(std::string module_name, float x, float y) : Module(module_name, x, y) { 29 | this->device_name_input = this->gui->addTextInput("Device name"); 30 | } 31 | }; 32 | } 33 | 34 | #endif /* HardwareModule_hpp */ 35 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule/StringConverterModule.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // StringConverterModule.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #ifndef StringConverterModule_hpp 10 | #define StringConverterModule_hpp 11 | 12 | #include "../Module.hpp" 13 | 14 | namespace AeonKitMapper { 15 | template class StringConverterModule : public Module { 16 | ofxDatGuiLabel *input_number_label; 17 | T input_number; 18 | public: 19 | virtual void connected(AeonNode::Connector *to) override { 20 | this->eval_and_send(); 21 | } 22 | StringConverterModule(float x, float y); 23 | virtual void received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) override; 24 | virtual std::string eval() override; 25 | virtual void eval_and_send() override; 26 | virtual std::string update_output_state() override; 27 | }; 28 | } 29 | 30 | #include "detail/StringConverterModule.hpp" 31 | 32 | #endif /* StringConverterModule_hpp */ 33 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Utility/ValueModule/detail/ValueModule.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ValueModule.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #include "../ValueModule.hpp" 10 | 11 | namespace AeonKitMapper { 12 | template ValueModule::ValueModule(float x, float y) : Module("Value", x, y) { 13 | this->add_connector("output", (std::type_info *)&typeid(T), AeonNode::Connector::Type::Output); 14 | ofxDatGuiSlider *slider = this->gui->addSlider("value", 0, 255); 15 | slider->onSliderEvent(this,& ValueModule::onSliderEvent); 16 | slider->bind(this->value, 0, 255); 17 | } 18 | 19 | template void ValueModule::onSliderEvent(ofxDatGuiSliderEvent e) { 20 | this->eval_and_send(); 21 | } 22 | 23 | template T ValueModule::eval() { 24 | return this->value; 25 | } 26 | 27 | template void ValueModule::eval_and_send() { 28 | this->send_data(this->update_output_state()); 29 | } 30 | 31 | template T ValueModule::update_output_state() { 32 | return this->eval(); 33 | } 34 | } -------------------------------------------------------------------------------- /AeonNodeEditor.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | src 6 | 7 | 8 | src 9 | 10 | 11 | src\AeonNodeEditor 12 | 13 | 14 | 15 | 16 | {d8376475-7454-4a24-b08a-aac121d3ad6f} 17 | 18 | 19 | {CD535047-7219-6081-8116-DBB6} 20 | 21 | 22 | 23 | 24 | src 25 | 26 | 27 | src\AeonNodeEditor 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Hardware/DisplayModule/DisplayModule.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // DisplayModule.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #include "DisplayModule.hpp" 10 | 11 | namespace AeonKitMapper { 12 | HapticDisplay::HapticDisplay(float x, float y) : DisplayModule("HapticDisplay", x, y) { 13 | this->add_connector("pattern", (std::type_info *)&typeid(int), AeonNode::Connector::Type::Input); 14 | this->pattern_text_label = this->gui->addLabel(""); 15 | } 16 | 17 | void HapticDisplay::received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) { 18 | int pattern = boost::any_cast(data); 19 | this->pattern_text_label->setLabel(HapticDisplay::pattern_text((HapticPattern)pattern)); 20 | } 21 | 22 | OLEDDisplay::OLEDDisplay(float x, float y) : DisplayModule("OLEDDisplay", x, y) { 23 | this->add_connector("str", (std::type_info *)&typeid(std::string), AeonNode::Connector::Type::Input); 24 | this->display_text_label = this->gui->addLabel(""); 25 | } 26 | 27 | void OLEDDisplay::received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) { 28 | std::string str = boost::any_cast(data); 29 | this->display_text_label->setLabel(str); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Module.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // Module.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/10/16. 6 | // 7 | // 8 | 9 | #ifndef Module_hpp 10 | #define Module_hpp 11 | 12 | #include 13 | #include 14 | #include "ofEventUtils.h" 15 | #include "ofxDatGui.h" 16 | #include "ModuleCore.hpp" 17 | #include "thunderclap.h" 18 | 19 | namespace AeonKitMapper { 20 | template class Module : public ModuleCore { 21 | protected: 22 | ofxDatGui *gui; 23 | 24 | virtual void onMouseDragged(ofMouseEventArgs& mouseArgs) override; 25 | public: 26 | virtual void connected(AeonNode::Connector *to) override { 27 | this->eval_and_send(); 28 | } 29 | virtual void size_to_fit() override; 30 | void update(ofEventArgs &args); 31 | Module(std::string module_name, float x, float y); 32 | ~Module(); 33 | virtual void add_connector(std::string tag, std::type_info *connectable_type, AeonNode::Connector::Type type) override; 34 | virtual void received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) override = 0; 35 | virtual T eval() = 0; 36 | virtual void eval_and_send() = 0; 37 | virtual T update_output_state() = 0; 38 | }; 39 | } 40 | 41 | #include "detail/Module.hpp" 42 | 43 | #endif /* Module_hpp */ 44 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule/detail/StringConverterModule.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // StringConverterModule.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #include "../StringConverterModule.hpp" 10 | 11 | namespace AeonKitMapper { 12 | template StringConverterModule::StringConverterModule(float x, float y) : Module("StringConverter", x, y) { 13 | this->add_connector("input", (std::type_info *)&typeid(T), AeonNode::Connector::Type::Input); 14 | this->add_connector("str", (std::type_info *)&typeid(std::string), AeonNode::Connector::Type::Output); 15 | this->input_number_label = this->gui->addLabel(""); 16 | } 17 | 18 | template void StringConverterModule::received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) { 19 | this->input_number = boost::any_cast(data); 20 | this->eval_and_send(); 21 | } 22 | 23 | template std::string StringConverterModule::eval() { 24 | return std::to_string(this->input_number); 25 | } 26 | 27 | template void StringConverterModule::eval_and_send() { 28 | this->send_data(this->update_output_state()); 29 | } 30 | 31 | template std::string StringConverterModule::update_output_state() { 32 | auto str = this->eval(); 33 | this->input_number_label->setLabel(str); 34 | return str; 35 | } 36 | } -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Utility/CounterModule/CounterModule.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // CounterModule.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #include "CounterModule.hpp" 10 | 11 | namespace AeonKitMapper { 12 | CounterModule::CounterModule(float x, float y) : Module("Counter", x, y) , counter(0) { 13 | this->add_connector("input", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Input); 14 | this->add_connector("output", (std::type_info *)&typeid(int), AeonNode::Connector::Type::Output); 15 | this->counter_label = this->gui->addLabel(std::to_string(this->eval())); 16 | } 17 | 18 | void CounterModule::received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) { 19 | bool in = boost::any_cast(data); 20 | if (in) { 21 | this->increment(); 22 | } 23 | else { 24 | this->decrement(); 25 | } 26 | 27 | this->eval_and_send(); 28 | } 29 | 30 | int CounterModule::eval() { 31 | return this->counter; 32 | } 33 | 34 | void CounterModule::eval_and_send() { 35 | this->send_data(this->update_output_state()); 36 | } 37 | 38 | int CounterModule::update_output_state() { 39 | this->counter_label->setLabel(std::to_string(this->eval())); 40 | return this->eval(); 41 | } 42 | 43 | void CounterModule::increment() { 44 | this->counter++; 45 | } 46 | 47 | void CounterModule::decrement() { 48 | this->counter--; 49 | } 50 | } -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/detail/Module.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // Module.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/10/16. 6 | // 7 | // 8 | 9 | 10 | #include "../Module.hpp" 11 | 12 | namespace AeonKitMapper { 13 | template void Module::onMouseDragged(ofMouseEventArgs& mouseArgs) { 14 | Node::onMouseDragged(mouseArgs); 15 | if (this->selected) { 16 | this->gui->setPosition(this->frame.origin.x, this->frame.origin.y); 17 | } 18 | } 19 | 20 | template void Module::size_to_fit() { 21 | Node::size_to_fit(); 22 | this->frame.size.height = this->gui->getHeight() - 3; 23 | } 24 | 25 | template void Module::update(ofEventArgs &args) { 26 | this->gui->update(); 27 | } 28 | 29 | template Module::Module(std::string module_name, float x, float y) : ModuleCore(module_name, x, y) { 30 | this->did_draw = [=] (ofxHierarchy::Rect frame) { 31 | this->gui->draw(); 32 | }; 33 | 34 | this->gui = new ofxDatGui(ofxDatGuiAnchor::NO_ANCHOR); 35 | this->gui->setPosition(this->frame.origin.x, this->frame.origin.y); 36 | this->gui->setWidth(150, 20); 37 | this->gui->addHeader(this->module_name, false); 38 | this->size_to_fit(); 39 | 40 | ofAddListener(ofEvents().update, this, &Module::update); 41 | } 42 | 43 | template Module::~Module() { 44 | delete this->gui; 45 | } 46 | 47 | template void Module::add_connector(std::string tag, std::type_info *connectable_type, AeonNode::Connector::Type type) { 48 | this->size_to_fit(); 49 | ModuleCore::add_connector(tag, connectable_type, type); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/lib/AeonNode/src/Node.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // Node.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/10/16. 6 | // 7 | // 8 | 9 | #ifndef Node_hpp 10 | #define Node_hpp 11 | 12 | #include 13 | #include 14 | #include 15 | #include "ofGraphics.h" 16 | #include "ofxHierarchy.h" 17 | #include "Connector.hpp" 18 | 19 | namespace AeonNode { 20 | class Connector; 21 | class Node : public ofxHierarchy::View { 22 | protected: 23 | ofxHierarchy::Point original_position; 24 | ofxHierarchy::Point clicked_position; 25 | bool selected; 26 | std::string identifier; 27 | 28 | Connector* tag_for_connector(std::vector *connector, std::string tag); 29 | Connector* add_connector(Connector::Type type, std::type_info *connectable_type, std::string tag, std::vector *connecter); 30 | virtual void onMousePressed(ofMouseEventArgs& mouseArgs); 31 | virtual void onMouseReleased(ofMouseEventArgs& mouseArgs); 32 | virtual void onMouseDragged(ofMouseEventArgs& mouseArgs); 33 | public: 34 | std::vector input_connector; 35 | std::vector output_connector; 36 | Connector* tag_for_connector(std::string tag, Connector::Type type); 37 | 38 | std::string get_identifier(); 39 | Node(ofxHierarchy::Rect f); 40 | virtual void connected(Connector *to) {}; 41 | virtual void add_connector(std::string tag, std::type_info *connectable_type, Connector::Type type); 42 | virtual void send_data(boost::any data); 43 | virtual void received_data(Node *from, Connector *connector, boost::any data) = 0; 44 | virtual void size_to_fit(); 45 | }; 46 | } 47 | 48 | #endif /* Node_hpp */ 49 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Utility/HapticPatternGeneratorModule/HapticPatternGeneratorModule.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // HapticPatternGeneratorModule.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #ifndef HapticPatternGeneratorModule_hpp 10 | #define HapticPatternGeneratorModule_hpp 11 | 12 | #include "../Module.hpp" 13 | #include "../../Hardware/DisplayModule/DisplayModule.hpp" 14 | 15 | namespace AeonKitMapper { 16 | class HapticPatternGeneratorModule : public Module { 17 | private: 18 | static std::string pattern_text(HapticDisplay::HapticPattern type) { 19 | std::string result = ""; 20 | switch (type) { 21 | case HapticDisplay::HapticPattern::SingleTap: { 22 | result = "SingleTap"; 23 | } 24 | break; 25 | case HapticDisplay::HapticPattern::DoubleTap: { 26 | result = "DoubleTap"; 27 | } 28 | break; 29 | case HapticDisplay::HapticPattern::ShortDuration: { 30 | result = "ShortDuration"; 31 | } 32 | break; 33 | case HapticDisplay::HapticPattern::LongDuration: { 34 | result = "LongDuration"; 35 | } 36 | break; 37 | } 38 | 39 | return result; 40 | } 41 | ofxDatGuiButton *pattern_button; 42 | void onButtonEvent(ofxDatGuiButtonEvent e); 43 | public: 44 | HapticPatternGeneratorModule(float x, float y); 45 | HapticDisplay::HapticPattern type; 46 | void switch_pattern(); 47 | virtual void received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) override; 48 | virtual int eval() override; 49 | virtual void eval_and_send() override; 50 | virtual int update_output_state() override; 51 | }; 52 | } 53 | 54 | #endif /* HapticPatternGeneratorModule_hpp */ 55 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Logic/LogicModule.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // LogicModule.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #ifndef LogicModule_hpp 10 | #define LogicModule_hpp 11 | 12 | #include 13 | #include "../Module.hpp" 14 | 15 | namespace AeonKitMapper { 16 | class LogicModule : public Module { 17 | protected: 18 | std::map connector_state; 19 | void onToggleEvent(ofxDatGuiButtonEvent e); 20 | public: 21 | LogicModule(std::string module_name, float x, float y); 22 | void clear_input_state(); 23 | virtual void add_connector(std::string tag, std::type_info *connectable_type, AeonNode::Connector::Type type) override; 24 | virtual void received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) override; 25 | virtual void eval_and_send() override; 26 | virtual bool update_output_state() override; 27 | }; 28 | 29 | class LogicANDModule : public LogicModule { 30 | public: 31 | LogicANDModule(float x, float y); 32 | virtual bool eval(); 33 | }; 34 | 35 | class LogicORModule : public LogicModule { 36 | public: 37 | LogicORModule(float x, float y); 38 | virtual bool eval(); 39 | }; 40 | 41 | class LogicXORModule : public LogicModule { 42 | public: 43 | LogicXORModule(float x, float y); 44 | virtual bool eval(); 45 | }; 46 | 47 | class LogicNOTModule : public LogicModule { 48 | public: 49 | LogicNOTModule(float x, float y); 50 | virtual bool eval(); 51 | }; 52 | 53 | class LogicBooleanModule : public LogicModule { 54 | public: 55 | LogicBooleanModule(float x, float y); 56 | virtual bool eval(); 57 | void onButtonEvent(ofxDatGuiButtonEvent e); 58 | }; 59 | } 60 | 61 | #endif /* LogicModule_hpp */ 62 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Condition/ConditionModule.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ConditionModule.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #ifndef ConditionModule_hpp 10 | #define ConditionModule_hpp 11 | 12 | #include "../Module.hpp" 13 | 14 | namespace AeonKitMapper { 15 | typedef enum { 16 | Equal, 17 | NotEqual, 18 | Greater, 19 | GreaterEqual, 20 | Less, 21 | LessEqual, 22 | } ComparisonType; 23 | template class ConditionModule : public Module { 24 | private: 25 | T in1; 26 | T in2; 27 | ofxDatGuiButton *comparison_type_button; 28 | static std::string comparison_type_text(ComparisonType type) { 29 | std::string result = ""; 30 | switch (type) { 31 | case Equal: { 32 | result = "== : Equal"; 33 | } 34 | break; 35 | case NotEqual: { 36 | result = "!= : NotEqual"; 37 | } 38 | break; 39 | case Greater: { 40 | result = "> : Greater"; 41 | } 42 | break; 43 | case GreaterEqual: { 44 | result = ">= : GreaterEqual"; 45 | } 46 | break; 47 | case Less: { 48 | result = "< : Less"; 49 | } 50 | break; 51 | case LessEqual: { 52 | result = "<= : LessEqual"; 53 | } 54 | break; 55 | } 56 | 57 | return result; 58 | } 59 | void onButtonEvent(ofxDatGuiButtonEvent e); 60 | public: 61 | ConditionModule(float x, float y); 62 | ComparisonType type; 63 | void switch_comparison_type(); 64 | virtual void received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) override; 65 | virtual bool eval() override; 66 | virtual void eval_and_send() override; 67 | virtual bool update_output_state() override; 68 | }; 69 | } 70 | 71 | #include "detail/ConditionModule.hpp" 72 | 73 | #endif /* ConditionModule_hpp */ 74 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Utility/HapticPatternGeneratorModule/HapticPatternGeneratorModule.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // HapticPatternGeneratorModule.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #include "HapticPatternGeneratorModule.hpp" 10 | 11 | namespace AeonKitMapper { 12 | HapticPatternGeneratorModule::HapticPatternGeneratorModule(float x, float y) : Module("HapticPatternGenerator", x, y) , type(HapticDisplay::HapticPattern::SingleTap) { 13 | this->add_connector("input", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Input); 14 | this->add_connector("pattern", (std::type_info *)&typeid(int), AeonNode::Connector::Type::Output); 15 | this->pattern_button = this->gui->addButton(HapticPatternGeneratorModule::pattern_text(this->type)); 16 | this->pattern_button->onButtonEvent(this, &HapticPatternGeneratorModule::onButtonEvent); 17 | } 18 | 19 | void HapticPatternGeneratorModule::onButtonEvent(ofxDatGuiButtonEvent e) { 20 | this->switch_pattern(); 21 | } 22 | 23 | void HapticPatternGeneratorModule::switch_pattern() { 24 | this->type = (HapticDisplay::HapticPattern)((this->type + 1) % 4); 25 | this->update_output_state(); 26 | } 27 | 28 | void HapticPatternGeneratorModule::received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) { 29 | bool in = boost::any_cast(data); 30 | if (in) { 31 | this->eval_and_send(); 32 | } 33 | } 34 | 35 | int HapticPatternGeneratorModule::eval() { 36 | return this->type; 37 | } 38 | 39 | void HapticPatternGeneratorModule::eval_and_send() { 40 | this->send_data(this->update_output_state()); 41 | } 42 | 43 | int HapticPatternGeneratorModule::update_output_state() { 44 | this->pattern_button->setLabel(HapticPatternGeneratorModule::pattern_text(this->type)); 45 | return this->eval(); 46 | } 47 | } -------------------------------------------------------------------------------- /src/lib/AeonNode/src/Connector.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // Connector.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/10/16. 6 | // 7 | // 8 | 9 | #ifndef Connector_hpp 10 | #define Connector_hpp 11 | 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include "ofTrueTypeFont.h" 18 | #include "ofGraphics.h" 19 | #include "ofxHierarchy.h" 20 | #include "../lib/thunderclap/thunderclap.h" 21 | 22 | namespace AeonNode { 23 | class Node; 24 | class Connector : public ofxHierarchy::View { 25 | private: 26 | bool selected; 27 | ofPoint drag_point; 28 | std::string identifier; 29 | Node *parent_node; 30 | ofTrueTypeFont label_font; 31 | 32 | static thunderclap::thunderclap>* shared_observer(); 33 | void onConnecterPressed(ofMouseEventArgs& mouseArgs); 34 | void onConnecterReleased(ofMouseEventArgs& mouseArgs); 35 | void onConnecterDragged(ofMouseEventArgs& mouseArgs); 36 | std::type_info *connectable_type; 37 | public: 38 | static const std::string MouseReleaseNotification; 39 | std::string tag; 40 | typedef enum { 41 | Input, 42 | Output 43 | } Type; 44 | Connector::Type type; 45 | std::vector connected_connector; 46 | Connector *parent_connector; 47 | Node* get_parent_node(); 48 | std::type_info* get_connectable_type(); 49 | virtual bool is_connectable_type(std::type_info *type); 50 | virtual void send_data(Node *from, boost::any data); 51 | virtual void received_data(Node *from, boost::any data); 52 | virtual bool connect(Connector *connector); 53 | virtual void disconnect(Connector *connector = nullptr); 54 | virtual void draw(); 55 | Connector(Node *parent_node, std::type_info *connectable_type, Connector::Type type); 56 | ~Connector(); 57 | }; 58 | } 59 | 60 | #endif /* Connector_hpp */ 61 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Hardware/SensorModule/SensorModule.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // SensorModule.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #ifndef SensorModule_hpp 10 | #define SensorModule_hpp 11 | 12 | #include "../HardwareModule.hpp" 13 | 14 | namespace AeonKitMapper { 15 | template class SensorModule : public HardwareModule { 16 | public: 17 | SensorModule(std::string module_name, float x, float y) : HardwareModule(module_name, x, y) {} 18 | 19 | virtual void received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) { 20 | bool in = boost::any_cast(data); 21 | if (in) { 22 | this->eval_and_send(); 23 | } 24 | } 25 | 26 | virtual T update_output_state() = 0; 27 | virtual void eval_and_send() = 0; 28 | }; 29 | 30 | class TiltSensor : public SensorModule { 31 | private: 32 | bool tilt; 33 | void onButtonEvent(ofxDatGuiButtonEvent e); 34 | public: 35 | TiltSensor(float x, float y); 36 | virtual bool eval(); 37 | virtual void eval_and_send(); 38 | virtual bool update_output_state(); 39 | bool get_tilt_status(); 40 | }; 41 | 42 | class TouchSensor : public SensorModule { 43 | private: 44 | int position; 45 | int pressure; 46 | void onSliderEvent(ofxDatGuiSliderEvent e); 47 | public: 48 | TouchSensor(float x, float y); 49 | virtual int eval(); 50 | virtual void eval_and_send(); 51 | virtual int update_output_state(); 52 | int get_position(); 53 | int get_pressure(); 54 | }; 55 | 56 | class DepthSensor : public SensorModule { 57 | private: 58 | int depth; 59 | void onSliderEvent(ofxDatGuiSliderEvent e); 60 | public: 61 | DepthSensor(float x, float y); 62 | virtual int eval(); 63 | virtual void eval_and_send(); 64 | virtual int update_output_state(); 65 | int get_depth(); 66 | }; 67 | } 68 | 69 | #endif /* SensorModule_hpp */ 70 | -------------------------------------------------------------------------------- /AeonNodeEditor.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 12.00 2 | # Visual Studio 14 3 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AeonNodeEditor", "AeonNodeEditor.vcxproj", "{7FD42DF7-442E-479A-BA76-D0022F99702A}" 4 | EndProject 5 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openframeworksLib", "..\..\..\libs\openFrameworksCompiled\project\vs\openframeworksLib.vcxproj", "{5837595D-ACA9-485C-8E76-729040CE4B0B}" 6 | EndProject 7 | Global 8 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 9 | Debug|Win32 = Debug|Win32 10 | Debug|x64 = Debug|x64 11 | Release|Win32 = Release|Win32 12 | Release|x64 = Release|x64 13 | EndGlobalSection 14 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 15 | {7FD42DF7-442E-479A-BA76-D0022F99702A}.Debug|Win32.ActiveCfg = Debug|Win32 16 | {7FD42DF7-442E-479A-BA76-D0022F99702A}.Debug|Win32.Build.0 = Debug|Win32 17 | {7FD42DF7-442E-479A-BA76-D0022F99702A}.Debug|x64.ActiveCfg = Debug|x64 18 | {7FD42DF7-442E-479A-BA76-D0022F99702A}.Debug|x64.Build.0 = Debug|x64 19 | {7FD42DF7-442E-479A-BA76-D0022F99702A}.Release|Win32.ActiveCfg = Release|Win32 20 | {7FD42DF7-442E-479A-BA76-D0022F99702A}.Release|Win32.Build.0 = Release|Win32 21 | {7FD42DF7-442E-479A-BA76-D0022F99702A}.Release|x64.ActiveCfg = Release|x64 22 | {7FD42DF7-442E-479A-BA76-D0022F99702A}.Release|x64.Build.0 = Release|x64 23 | {5837595D-ACA9-485C-8E76-729040CE4B0B}.Debug|Win32.ActiveCfg = Debug|Win32 24 | {5837595D-ACA9-485C-8E76-729040CE4B0B}.Debug|Win32.Build.0 = Debug|Win32 25 | {5837595D-ACA9-485C-8E76-729040CE4B0B}.Debug|x64.ActiveCfg = Debug|x64 26 | {5837595D-ACA9-485C-8E76-729040CE4B0B}.Debug|x64.Build.0 = Debug|x64 27 | {5837595D-ACA9-485C-8E76-729040CE4B0B}.Release|Win32.ActiveCfg = Release|Win32 28 | {5837595D-ACA9-485C-8E76-729040CE4B0B}.Release|Win32.Build.0 = Release|Win32 29 | {5837595D-ACA9-485C-8E76-729040CE4B0B}.Release|x64.ActiveCfg = Release|x64 30 | {5837595D-ACA9-485C-8E76-729040CE4B0B}.Release|x64.Build.0 = Release|x64 31 | EndGlobalSection 32 | GlobalSection(SolutionProperties) = preSolution 33 | HideSolutionNode = FALSE 34 | EndGlobalSection 35 | EndGlobal 36 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Hardware/DisplayModule/DisplayModule.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // DisplayModule.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #ifndef DisplayModule_hpp 10 | #define DisplayModule_hpp 11 | 12 | #include "../HardwareModule.hpp" 13 | 14 | namespace AeonKitMapper { 15 | template class DisplayModule : public HardwareModule { 16 | public: 17 | DisplayModule(std::string module_name, float x, float y) : HardwareModule(module_name, x, y) { 18 | this->size_to_fit(); 19 | } 20 | virtual void received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) = 0; 21 | }; 22 | 23 | class HapticDisplay : public DisplayModule { 24 | public: 25 | typedef enum { 26 | SingleTap, 27 | DoubleTap, 28 | ShortDuration, 29 | LongDuration 30 | } HapticPattern; 31 | private: 32 | ofxDatGuiLabel *pattern_text_label; 33 | 34 | static std::string pattern_text(HapticPattern pattern) { 35 | std::string result = ""; 36 | switch (pattern) { 37 | case SingleTap: { 38 | result = "SingleTap"; 39 | } 40 | break; 41 | case DoubleTap: { 42 | result = "DoubleTap"; 43 | } 44 | break; 45 | case ShortDuration: { 46 | result = "ShortDuration"; 47 | } 48 | break; 49 | case LongDuration: { 50 | result = "LongDuration"; 51 | } 52 | break; 53 | } 54 | 55 | return result; 56 | } 57 | public: 58 | HapticDisplay(float x, float y); 59 | virtual void received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data); 60 | virtual int eval() { return 0; }; 61 | virtual void eval_and_send() {}; 62 | virtual int update_output_state() { return this->eval(); }; 63 | }; 64 | 65 | class OLEDDisplay : public DisplayModule { 66 | private: 67 | ofxDatGuiLabel *display_text_label; 68 | public: 69 | OLEDDisplay(float x, float y); 70 | virtual void received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data); 71 | virtual std::string eval() { return this->display_text_label->getLabel(); }; 72 | virtual void eval_and_send() {}; 73 | virtual std::string update_output_state() { return this->eval(); }; 74 | }; 75 | } 76 | 77 | #endif /* DisplayModule_hpp */ 78 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Condition/detail/ConditionModule.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ConditionModule.h 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #include "../ConditionModule.hpp" 10 | 11 | namespace AeonKitMapper { 12 | template void ConditionModule::onButtonEvent(ofxDatGuiButtonEvent e) { 13 | this->switch_comparison_type(); 14 | this->comparison_type_button->setLabel(AeonKitMapper::ConditionModule::comparison_type_text(this->type)); 15 | this->eval_and_send(); 16 | } 17 | 18 | template ConditionModule::ConditionModule(float x, float y) : Module("Condition", x, y), type(Equal) { 19 | this->add_connector("in1", (std::type_info *)&typeid(T), AeonNode::Connector::Type::Input); 20 | this->add_connector("in2", (std::type_info *)&typeid(T), AeonNode::Connector::Type::Input); 21 | this->add_connector("output", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Output); 22 | this->comparison_type_button = this->gui->addButton(this->comparison_type_text(this->type)); 23 | this->comparison_type_button->onButtonEvent(this, &ConditionModule::onButtonEvent); 24 | } 25 | 26 | template void ConditionModule::received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) { 27 | if (connector->tag == "in1") { 28 | this->in1 = boost::any_cast(data); 29 | } 30 | else if (connector->tag == "in2") { 31 | this->in2 = boost::any_cast(data); 32 | } 33 | this->eval_and_send(); 34 | } 35 | 36 | template void ConditionModule::switch_comparison_type() { 37 | this->type = (ComparisonType)((this->type + 1) % 6); 38 | } 39 | 40 | template bool ConditionModule::eval() { 41 | bool result = false; 42 | if (type == Equal) { 43 | result = this->in1 == this->in2; 44 | } 45 | else if (type == NotEqual) { 46 | result = this->in1 != this->in2; 47 | } 48 | else if (type == Greater) { 49 | result = this->in1 > this->in2; 50 | } 51 | else if (type == GreaterEqual) { 52 | result = this->in1 >= this->in2; 53 | } 54 | else if (type == Less) { 55 | result = this->in1 < this->in2; 56 | } 57 | else if (type == LessEqual) { 58 | result = this->in1 <= this->in2; 59 | } 60 | 61 | return result; 62 | } 63 | 64 | template void ConditionModule::eval_and_send() { 65 | this->send_data(this->update_output_state()); 66 | } 67 | 68 | template bool ConditionModule::update_output_state() { 69 | return this->eval(); 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | !bin/data/* 3 | bin/*.app 4 | bin/.DS_Store 5 | 6 | ## Ignore Visual Studio temporary files, build results, and 7 | ## files generated by popular Visual Studio add-ons. 8 | 9 | # User-specific files 10 | *.suo 11 | *.user 12 | *.sln.docstates 13 | 14 | # Build results 15 | 16 | [Dd]ebug/ 17 | [Rr]elease/ 18 | x64/ 19 | build/ 20 | [Bb]in/ 21 | [Oo]bj/ 22 | 23 | # MSTest test Results 24 | [Tt]est[Rr]esult*/ 25 | [Bb]uild[Ll]og.* 26 | 27 | *_i.c 28 | *_p.c 29 | *.ilk 30 | *.meta 31 | *.obj 32 | *.pch 33 | *.pdb 34 | *.pgc 35 | *.pgd 36 | *.rsp 37 | *.sbr 38 | *.tlb 39 | *.tli 40 | *.tlh 41 | *.tmp 42 | *.tmp_proj 43 | *.log 44 | *.vspscc 45 | *.vssscc 46 | .builds 47 | *.pidb 48 | *.log 49 | *.scc 50 | 51 | # Visual C++ cache files 52 | ipch/ 53 | *.aps 54 | *.ncb 55 | *.opensdf 56 | *.sdf 57 | *.cachefile 58 | 59 | # Visual Studio profiler 60 | *.psess 61 | *.vsp 62 | *.vspx 63 | 64 | # Guidance Automation Toolkit 65 | *.gpState 66 | 67 | # ReSharper is a .NET coding add-in 68 | _ReSharper*/ 69 | *.[Rr]e[Ss]harper 70 | 71 | # TeamCity is a build add-in 72 | _TeamCity* 73 | 74 | # DotCover is a Code Coverage Tool 75 | *.dotCover 76 | 77 | # NCrunch 78 | *.ncrunch* 79 | .*crunch*.local.xml 80 | 81 | # Installshield output folder 82 | [Ee]xpress/ 83 | 84 | # DocProject is a documentation generator add-in 85 | DocProject/buildhelp/ 86 | DocProject/Help/*.HxT 87 | DocProject/Help/*.HxC 88 | DocProject/Help/*.hhc 89 | DocProject/Help/*.hhk 90 | DocProject/Help/*.hhp 91 | DocProject/Help/Html2 92 | DocProject/Help/html 93 | 94 | # Click-Once directory 95 | publish/ 96 | 97 | # Publish Web Output 98 | *.Publish.xml 99 | *.pubxml 100 | 101 | # NuGet Packages Directory 102 | ## TODO: If you have NuGet Package Restore enabled, uncomment the next line 103 | packages/ 104 | 105 | # Windows Azure Build Output 106 | csx 107 | *.build.csdef 108 | 109 | # Windows Store app package directory 110 | AppPackages/ 111 | 112 | # Others 113 | sql/ 114 | *.Cache 115 | ClientBin/ 116 | [Ss]tyle[Cc]op.* 117 | ~$* 118 | *~ 119 | *.dbmdl 120 | *.[Pp]ublish.xml 121 | *.pfx 122 | *.publishsettings 123 | 124 | # RIA/Silverlight projects 125 | Generated_Code/ 126 | 127 | # Backup & report files from converting an old project file to a newer 128 | # Visual Studio version. Backup files are not needed, because we have git ;-) 129 | _UpgradeReport_Files/ 130 | Backup*/ 131 | UpgradeLog*.XML 132 | UpgradeLog*.htm 133 | 134 | # SQL Server files 135 | App_Data/*.mdf 136 | App_Data/*.ldf 137 | 138 | # ========================= 139 | # Windows detritus 140 | # ========================= 141 | 142 | # Windows image file caches 143 | Thumbs.db 144 | ehthumbs.db 145 | 146 | # Folder config file 147 | Desktop.ini 148 | 149 | # Recycle Bin used on file shares 150 | $RECYCLE.BIN/ 151 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/ModuleExporter/ModuleExporter.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // ModuleExporter.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #include 10 | #include 11 | #include "ModuleExporter.hpp" 12 | #include "AeonKitMapper.hpp" 13 | 14 | namespace AeonKitMapper { 15 | void ModuleExporter::export_module_relation(std::vector module) { 16 | ofstream outputfile(ofToDataPath("graph.amg")); 17 | for (int i = 0; i < module.size(); i++) { 18 | auto n = dynamic_cast(module[i]); 19 | for (auto c : n->output_connector) { 20 | for (auto d : c->connected_connector) { 21 | auto node = dynamic_cast(d->get_parent_node()); 22 | outputfile << n->get_module_name() << ":" << n->get_identifier() << ":" << c->tag; 23 | 24 | auto hardware = dynamic_cast(n); 25 | if (hardware) { 26 | std::string device_name = hardware->get_device_name(); 27 | std::string lower_device_name; 28 | lower_device_name.resize(device_name.size()); 29 | std::transform(device_name.begin(), device_name.end(), lower_device_name.begin(), static_cast(std::tolower)); 30 | outputfile << ":" << lower_device_name; 31 | } 32 | auto value = dynamic_cast *>(n); 33 | if (value) { 34 | outputfile << ":" << value->eval(); 35 | } 36 | auto int_condition = dynamic_cast *>(n); 37 | if (int_condition) { 38 | outputfile << ":" << int_condition->type; 39 | } 40 | auto bool_condition = dynamic_cast *>(n); 41 | if (bool_condition) { 42 | outputfile << ":" << bool_condition->type; 43 | } 44 | auto pattern = dynamic_cast(n); 45 | if (pattern) { 46 | outputfile << ":" << pattern->type; 47 | } 48 | 49 | outputfile << " " << node->get_module_name() << ":" << node->get_identifier() << ":" << d->tag; 50 | 51 | hardware = dynamic_cast(node); 52 | if (hardware) { 53 | std::string device_name = hardware->get_device_name(); 54 | std::string lower_device_name; 55 | lower_device_name.resize(device_name.size()); 56 | std::transform(device_name.begin(), device_name.end(), lower_device_name.begin(), static_cast(std::tolower)); 57 | outputfile << ":" << lower_device_name; 58 | } 59 | value = dynamic_cast *>(node); 60 | if (value) { 61 | outputfile << ":" << value->eval(); 62 | } 63 | int_condition = dynamic_cast *>(node); 64 | if (int_condition) { 65 | outputfile << ":" << int_condition->type; 66 | } 67 | bool_condition = dynamic_cast *>(node); 68 | if (bool_condition) { 69 | outputfile << ":" << bool_condition->type; 70 | } 71 | pattern = dynamic_cast(node); 72 | if (pattern) { 73 | outputfile << ":" << pattern->type; 74 | } 75 | outputfile << std::endl; 76 | } 77 | } 78 | } 79 | outputfile.close(); 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /AeonNodeEditor.xcodeproj/xcshareddata/xcschemes/AeonNodeEditor Release.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 51 | 52 | 58 | 59 | 60 | 61 | 62 | 63 | 69 | 70 | 76 | 77 | 78 | 79 | 81 | 82 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /AeonNodeEditor.xcodeproj/xcshareddata/xcschemes/AeonNodeEditor Debug.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 66 | 67 | 73 | 75 | 81 | 82 | 83 | 84 | 86 | 87 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /AeonNodeEditor.xcodeproj/project.xcworkspace/xcshareddata/AeonNodeEditor.xcscmblueprint: -------------------------------------------------------------------------------- 1 | { 2 | "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "1F8DF012624E4FABF4C199F7A8065C5712B848A8", 3 | "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { 4 | 5 | }, 6 | "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { 7 | "2584CBCDB6905860AE3F296114B31C017465CDE7" : 0, 8 | "C7C5A3CE5C73F041BA0CBD132A893B066F4AFF47" : 0, 9 | "19C023D4013624E78B3CDBBC4DEB15EE516311BF" : 0, 10 | "1F8DF012624E4FABF4C199F7A8065C5712B848A8" : 0, 11 | "9233F0F4A2BE011BD468E5177A5AD6623263B23D" : 0, 12 | "3CFE6DC03B5AE030C2644D46CE50EADFB15BD3A9" : 0 13 | }, 14 | "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "F6DAAEF8-4F79-4E7B-A55C-A1B9E2DF5176", 15 | "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { 16 | "2584CBCDB6905860AE3F296114B31C017465CDE7" : "..\/..\/addons\/ofxSmartFont", 17 | "C7C5A3CE5C73F041BA0CBD132A893B066F4AFF47" : "AeonNodeEditor\/src\/lib\/AeonKitMapper\/lib\/ujson\/", 18 | "19C023D4013624E78B3CDBBC4DEB15EE516311BF" : "AeonNodeEditor\/src\/lib\/AeonNode\/lib\/thunderclap\/", 19 | "1F8DF012624E4FABF4C199F7A8065C5712B848A8" : "AeonNodeEditor\/", 20 | "9233F0F4A2BE011BD468E5177A5AD6623263B23D" : "..\/..\/addons\/ofxDatGui", 21 | "3CFE6DC03B5AE030C2644D46CE50EADFB15BD3A9" : "..\/..\/addons\/ofxHierarchy" 22 | }, 23 | "DVTSourceControlWorkspaceBlueprintNameKey" : "AeonNodeEditor", 24 | "DVTSourceControlWorkspaceBlueprintVersion" : 204, 25 | "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "AeonNodeEditor.xcodeproj", 26 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ 27 | { 28 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:0x0c\/thunderclap.git", 29 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 30 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "19C023D4013624E78B3CDBBC4DEB15EE516311BF" 31 | }, 32 | { 33 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:0x0c\/AeonNodeEditor.git", 34 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 35 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "1F8DF012624E4FABF4C199F7A8065C5712B848A8" 36 | }, 37 | { 38 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:braitsch\/ofxSmartFont.git", 39 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 40 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "2584CBCDB6905860AE3F296114B31C017465CDE7" 41 | }, 42 | { 43 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:0x0c\/ofxHierarchy.git", 44 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 45 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "3CFE6DC03B5AE030C2644D46CE50EADFB15BD3A9" 46 | }, 47 | { 48 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:braitsch\/ofxDatGui.git", 49 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 50 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "9233F0F4A2BE011BD468E5177A5AD6623263B23D" 51 | }, 52 | { 53 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/bitbucket.org\/awangk\/ujson.git", 54 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", 55 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "C7C5A3CE5C73F041BA0CBD132A893B066F4AFF47" 56 | } 57 | ] 58 | } -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Hardware/SensorModule/SensorModule.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // SensorModule.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #include "SensorModule.hpp" 10 | #include 11 | #include 12 | 13 | namespace AeonKitMapper { 14 | TiltSensor::TiltSensor(float x, float y) : SensorModule("TiltSensor", x, y), tilt(false) { 15 | this->add_connector("tilt", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Output); 16 | auto button = this->gui->addButton("tilt"); 17 | button->onButtonEvent(this, &TiltSensor::onButtonEvent); 18 | } 19 | 20 | bool TiltSensor::eval() { 21 | return this->get_tilt_status(); 22 | } 23 | 24 | void TiltSensor::eval_and_send() { 25 | this->send_data(this->update_output_state()); 26 | } 27 | 28 | bool TiltSensor::update_output_state() { 29 | return this->eval(); 30 | } 31 | 32 | bool TiltSensor::get_tilt_status() { 33 | return this->tilt; 34 | } 35 | 36 | void TiltSensor::onButtonEvent(ofxDatGuiButtonEvent e) { 37 | this->tilt = true; 38 | this->eval_and_send(); 39 | this->tilt = false; 40 | } 41 | 42 | TouchSensor::TouchSensor(float x, float y) : SensorModule("TouchSensor", x, y), position(0), pressure(0) { 43 | this->add_connector("position", (std::type_info *)&typeid(int), AeonNode::Connector::Type::Output); 44 | this->add_connector("pressure", (std::type_info *)&typeid(int), AeonNode::Connector::Type::Output); 45 | auto slider = this->gui->addSlider("position", 0, 255); 46 | slider->onSliderEvent(this, &TouchSensor::onSliderEvent); 47 | slider->setValue(this->position); 48 | slider->bind(this->position, 0, 255); 49 | slider = this->gui->addSlider("pressure", 0, 255); 50 | slider->onSliderEvent(this, &TouchSensor::onSliderEvent); 51 | slider->setValue(this->pressure); 52 | slider->bind(this->pressure, 0, 255); 53 | } 54 | 55 | void TouchSensor::onSliderEvent(ofxDatGuiSliderEvent e) { 56 | int data = 0; 57 | std::string slider_label = e.target->getLabel(); 58 | std::string label; 59 | label.resize(slider_label.size()); 60 | std::transform(slider_label.begin(), slider_label.end(), label.begin(), static_cast(std::tolower)); 61 | 62 | if (label == "position") { 63 | data = this->get_position(); 64 | } 65 | else if (label == "pressure") { 66 | data = this->get_pressure(); 67 | } 68 | auto c = this->tag_for_connector(&this->output_connector, label); 69 | c->send_data(this, data); 70 | } 71 | 72 | int TouchSensor::eval() { 73 | return this->get_position(); 74 | } 75 | 76 | void TouchSensor::eval_and_send() { 77 | auto c = this->tag_for_connector(&this->output_connector, "position"); 78 | c->send_data(this, this->get_position()); 79 | c = this->tag_for_connector(&this->output_connector, "pressure"); 80 | c->send_data(this, this->get_pressure()); 81 | } 82 | 83 | int TouchSensor::update_output_state() { 84 | return this->eval(); 85 | } 86 | 87 | int TouchSensor::get_position() { 88 | return this->position; 89 | } 90 | 91 | int TouchSensor::get_pressure() { 92 | return this->pressure; 93 | } 94 | 95 | DepthSensor::DepthSensor(float x, float y) : SensorModule("DepthSensor", x, y), depth(0) { 96 | this->add_connector("depth", (std::type_info *)&typeid(int), AeonNode::Connector::Type::Output); 97 | ofxDatGuiSlider *depth_slider = this->gui->addSlider("depth", 0, 255); 98 | depth_slider->onSliderEvent(this,& DepthSensor::onSliderEvent); 99 | depth_slider->setValue(this->depth); 100 | depth_slider->bind(this->depth, 0, 255); 101 | } 102 | 103 | void DepthSensor::onSliderEvent(ofxDatGuiSliderEvent e) { 104 | this->eval_and_send(); 105 | } 106 | 107 | int DepthSensor::eval() { 108 | return this->get_depth(); 109 | } 110 | 111 | void DepthSensor::eval_and_send() { 112 | this->send_data(this->update_output_state()); 113 | } 114 | 115 | int DepthSensor::update_output_state() { 116 | return this->eval(); 117 | } 118 | 119 | int DepthSensor::get_depth() { 120 | return this->depth; 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /src/lib/AeonNode/src/Node.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Node.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/10/16. 6 | // 7 | // 8 | 9 | #include 10 | #include 11 | #include 12 | #include "Node.hpp" 13 | 14 | namespace AeonNode { 15 | static float ConnectorMargin = 28; 16 | void Node::onMousePressed(ofMouseEventArgs& mouseArgs) { 17 | ofPoint p(mouseArgs.x, mouseArgs.y); 18 | if (this->hitTest(p.x, p.y)) { 19 | this->selected = true; 20 | this->clicked_position = {p.x, p.y}; 21 | } 22 | } 23 | 24 | void Node::onMouseReleased(ofMouseEventArgs& mouseArgs) { 25 | this->selected = false; 26 | this->original_position = {this->frame.origin.x, this->frame.origin.y}; 27 | } 28 | 29 | void Node::onMouseDragged(ofMouseEventArgs& mouseArgs) { 30 | if (this->selected) { 31 | ofPoint p(mouseArgs.x, mouseArgs.y); 32 | this->frame.origin.x = this->original_position.x - (this->clicked_position.x - p.x); 33 | this->frame.origin.y = this->original_position.y - (this->clicked_position.y - p.y); 34 | this->size_to_fit(); 35 | } 36 | } 37 | 38 | Connector* Node::add_connector(Connector::Type type, std::type_info *connectable_type, std::string tag, std::vector *connecter) { 39 | Connector *c = new Connector(this, connectable_type, type); 40 | c->tag = tag; 41 | connecter->push_back(c); 42 | return c; 43 | } 44 | 45 | Connector* Node::tag_for_connector(std::vector *connector, std::string tag) { 46 | Connector *result = nullptr; 47 | for (int i = 0; i < connector->size(); i++) { 48 | Connector *c = connector->at(i); 49 | if (c->tag == tag) { 50 | result = c; 51 | break; 52 | } 53 | } 54 | 55 | return result; 56 | } 57 | 58 | Connector* Node::tag_for_connector(std::string tag, Connector::Type type) { 59 | std::vector *connector = type == Connector::Type::Output ? &this->output_connector : &this->input_connector; 60 | return this->tag_for_connector(connector, tag); 61 | } 62 | 63 | std::string Node::get_identifier() { 64 | return this->identifier; 65 | } 66 | 67 | Node::Node(ofxHierarchy::Rect f) : View(), selected(false), original_position({f.origin.x, f.origin.y}), clicked_position({0, 0}) { 68 | std::string hash; 69 | static std::string chars = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789,./;'[]-=<>?:{}|_+"; 70 | static std::random_device rnd; 71 | static std::mt19937 mt(rnd()); 72 | static std::uniform_int_distribution<> idx(0, 32); 73 | for (int i = 0; i < 5; ++i) { 74 | hash += chars[idx(mt)]; 75 | } 76 | this->identifier = hash; 77 | this->frame = f; 78 | this->drawable_content = [=](ofxHierarchy::Rect frame) { 79 | ofFill(); 80 | ofSetColor(this->color); 81 | ofDrawRectangle(0, 0, frame.size.width, frame.size.height); 82 | }; 83 | this->will_draw = [=](ofxHierarchy::Rect frame) { 84 | for (int i = 0; i < this->input_connector.size(); i++) { 85 | auto c = this->input_connector[i]; 86 | c->draw(); 87 | } 88 | for (int i = 0; i < this->output_connector.size(); i++) { 89 | auto c = this->output_connector[i]; 90 | c->draw(); 91 | } 92 | }; 93 | ofAddListener(ofEvents().mousePressed, this, &Node::onMousePressed); 94 | ofAddListener(ofEvents().mouseReleased, this, &Node::onMouseReleased); 95 | ofAddListener(ofEvents().mouseDragged, this, &Node::onMouseDragged); 96 | } 97 | 98 | void Node::add_connector(std::string tag, std::type_info *connectable_type, Connector::Type type) { 99 | std::vector *connector = type == Connector::Type::Output ? &this->output_connector : &this->input_connector; 100 | this->add_connector(type, connectable_type, tag, connector); 101 | this->size_to_fit(); 102 | } 103 | 104 | void Node::send_data(boost::any data) { 105 | for (int i = 0; i < this->output_connector.size(); i++) { 106 | this->output_connector[i]->send_data(this, data); 107 | } 108 | } 109 | 110 | void Node::size_to_fit() { 111 | for (int i = 0; i < this->input_connector.size(); i++) { 112 | auto c = this->input_connector[i]; 113 | c->setCenter(this->frame.origin.x - 10, this->frame.origin.y + i * ConnectorMargin + 10); 114 | } 115 | for (int i = 0; i < this->output_connector.size(); i++) { 116 | auto c = this->output_connector[i]; 117 | c->setCenter(this->frame.origin.x + this->frame.size.width + 10, this->frame.origin.y + i * ConnectorMargin + 10); 118 | } 119 | } 120 | } 121 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/Module/Logic/LogicModule.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // LogicModule.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/12/16. 6 | // 7 | // 8 | 9 | #include "LogicModule.hpp" 10 | 11 | namespace AeonKitMapper { 12 | LogicModule::LogicModule(std::string module_name, float x, float y) : Module(module_name, x, y) {} 13 | 14 | void LogicModule::clear_input_state() { 15 | for (int i = 0; i < this->input_connector.size(); i++) { 16 | auto c = this->input_connector[i]; 17 | auto toggle = this->connector_state[c]; 18 | toggle->setEnabled(false); 19 | } 20 | } 21 | 22 | void LogicModule::onToggleEvent(ofxDatGuiButtonEvent e) { 23 | this->eval_and_send(); 24 | } 25 | 26 | void LogicModule::add_connector(std::string tag, std::type_info *connectable_type, AeonNode::Connector::Type type) { 27 | Module::add_connector(tag, connectable_type, type); 28 | auto toggle = this->gui->addToggle(tag); 29 | AeonNode::Connector *c = nullptr; 30 | if (type == AeonNode::Connector::Type::Input) { 31 | c = this->input_connector.back(); 32 | } 33 | else { 34 | c = this->output_connector.back(); 35 | } 36 | toggle->onButtonEvent(this, &LogicModule::onToggleEvent); 37 | this->connector_state[c] = toggle; 38 | } 39 | 40 | void LogicModule::received_data(AeonNode::Node *from, AeonNode::Connector *connector, boost::any data) { 41 | auto toggle = this->connector_state[connector]; 42 | bool in = boost::any_cast(data); 43 | toggle->setEnabled(in); 44 | this->eval_and_send(); 45 | } 46 | 47 | void LogicModule::eval_and_send() { 48 | this->send_data(this->update_output_state()); 49 | } 50 | 51 | bool LogicModule::update_output_state() { 52 | bool result = this->eval(); 53 | auto toggle = this->connector_state[this->output_connector[0]]; 54 | toggle->setEnabled(result); 55 | return result; 56 | } 57 | 58 | LogicANDModule::LogicANDModule(float x, float y) : LogicModule("AND", x, y) { 59 | this->add_connector("in1", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Input); 60 | this->add_connector("in2", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Input); 61 | this->add_connector("output", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Output); 62 | this->clear_input_state(); 63 | } 64 | 65 | bool LogicANDModule::eval() { 66 | bool result = true; 67 | for (int i = 0; i < this->input_connector.size(); i++) { 68 | auto c = this->input_connector[i]; 69 | auto toggle = this->connector_state[c]; 70 | result &= toggle->getEnabled(); 71 | } 72 | 73 | return result; 74 | } 75 | 76 | LogicORModule::LogicORModule(float x, float y) : LogicModule("OR", x, y) { 77 | this->add_connector("in1", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Input); 78 | this->add_connector("in2", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Input); 79 | this->add_connector("output", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Output); 80 | } 81 | 82 | bool LogicORModule::eval() { 83 | bool result = false; 84 | for (int i = 0; i < this->input_connector.size(); i++) { 85 | auto c = this->input_connector[i]; 86 | auto toggle = this->connector_state[c]; 87 | result |= toggle->getEnabled(); 88 | } 89 | 90 | return result; 91 | } 92 | 93 | LogicXORModule::LogicXORModule(float x, float y) : LogicModule("XOR", x, y) { 94 | this->add_connector("in1", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Input); 95 | this->add_connector("in2", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Input); 96 | this->add_connector("output", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Output); 97 | } 98 | 99 | bool LogicXORModule::eval() { 100 | bool result = false; 101 | for (int i = 0; i < this->input_connector.size(); i++) { 102 | auto c = this->input_connector[i]; 103 | auto toggle = this->connector_state[c]; 104 | result ^= toggle->getEnabled(); 105 | } 106 | 107 | return result; 108 | } 109 | 110 | LogicNOTModule::LogicNOTModule(float x, float y) : LogicModule("NOT", x, y) { 111 | this->add_connector("input", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Input); 112 | this->add_connector("output", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Output); 113 | } 114 | 115 | bool LogicNOTModule::eval() { 116 | bool result = false; 117 | for (int i = 0; i < this->input_connector.size(); i++) { 118 | auto c = this->input_connector[i]; 119 | auto toggle = this->connector_state[c]; 120 | result = !toggle->getEnabled(); 121 | } 122 | 123 | return result; 124 | } 125 | 126 | LogicBooleanModule::LogicBooleanModule(float x, float y) : LogicModule("BOOL", x, y) { 127 | this->add_connector("output", (std::type_info *)&typeid(bool), AeonNode::Connector::Type::Output); 128 | auto button = this->gui->addButton("Eval"); 129 | button->onButtonEvent(this, &LogicBooleanModule::onButtonEvent); 130 | } 131 | 132 | bool LogicBooleanModule::eval() { 133 | auto it = this->connector_state.begin(); 134 | auto toggle = it->second; 135 | return toggle->getEnabled(); 136 | } 137 | 138 | void LogicBooleanModule::onButtonEvent(ofxDatGuiButtonEvent e) { 139 | this->eval_and_send(); 140 | } 141 | } 142 | -------------------------------------------------------------------------------- /src/lib/AeonNode/src/Connector.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Connector.cpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/10/16. 6 | // 7 | // 8 | 9 | #include "Connector.hpp" 10 | #include "Node.hpp" 11 | 12 | namespace AeonNode { 13 | const std::string Connector::MouseReleaseNotification = "MouseReleaseNotification"; 14 | 15 | ofColor type_color(std::string type) { 16 | ofColor color = ofColor::wheat; 17 | if (type == "i") { 18 | color = ofColor::indianRed; 19 | } 20 | else if (type == "b") { 21 | color = ofColor::deepSkyBlue; 22 | } 23 | else if (type == "f") { 24 | color = ofColor::lightCoral; 25 | } 26 | 27 | return color; 28 | } 29 | 30 | thunderclap::thunderclap>* Connector::shared_observer() { 31 | static thunderclap::thunderclap> shared_observer; 32 | return &shared_observer; 33 | } 34 | 35 | void Connector::onConnecterPressed(ofMouseEventArgs& mouseArgs) { 36 | ofPoint p(mouseArgs.x, mouseArgs.y); 37 | if (this->hitTest(p.x, p.y)) { 38 | if (this->type == Connector::Output) { 39 | this->selected = true; 40 | p.x += 10; 41 | this->drag_point = p; 42 | } 43 | else { 44 | this->disconnect(); 45 | } 46 | } 47 | } 48 | 49 | void Connector::onConnecterReleased(ofMouseEventArgs& mouseArgs) { 50 | if (this->selected) { 51 | ofxHierarchy::Point p = {mouseArgs.x, mouseArgs.y}; 52 | std::tuple t = std::make_tuple(p, this); 53 | Connector::shared_observer()->clap(Connector::MouseReleaseNotification, t); 54 | } 55 | this->selected = false; 56 | } 57 | 58 | void Connector::onConnecterDragged(ofMouseEventArgs& mouseArgs) { 59 | if (this->selected) { 60 | ofPoint p(mouseArgs.x + 10, mouseArgs.y); 61 | this->drag_point = p; 62 | } 63 | } 64 | 65 | Node* Connector::get_parent_node() { 66 | return this->parent_node; 67 | } 68 | 69 | std::type_info* Connector::get_connectable_type() { 70 | return this->connectable_type; 71 | } 72 | 73 | bool Connector::is_connectable_type(std::type_info *type) { 74 | return this->connectable_type->name() == type->name(); 75 | } 76 | 77 | void Connector::send_data(Node *from, boost::any data) { 78 | for (int i = 0; i < this->connected_connector.size(); i++) { 79 | auto c = this->connected_connector[i]; 80 | c->received_data(from, data); 81 | } 82 | } 83 | 84 | void Connector::received_data(Node *from, boost::any data) { 85 | this->parent_node->received_data(from, this, data); 86 | } 87 | 88 | bool Connector::connect(Connector *connector) { 89 | bool result = false; 90 | if (this->type != connector->type && this->is_connectable_type(connector->get_connectable_type())) { 91 | if (connector->parent_connector != nullptr) { 92 | connector->disconnect(connector->parent_connector); 93 | } 94 | result = true; 95 | connector->parent_connector = this; 96 | this->connected_connector.push_back(connector); 97 | connector->parent_node->connected(this); 98 | } 99 | 100 | return result; 101 | } 102 | 103 | void Connector::disconnect(Connector *connector) { 104 | Connector *c = connector; 105 | if (connector == nullptr) { 106 | c = this->parent_connector; 107 | } 108 | if (c != nullptr && c->connected_connector.size()) { 109 | c->connected_connector.erase(std::remove(c->connected_connector.begin(), c->connected_connector.end(), this), c->connected_connector.end()); 110 | this->parent_connector = nullptr; 111 | } 112 | } 113 | 114 | void Connector::draw() { 115 | for (int i = 0; i < this->connected_connector.size(); i++) { 116 | ofSetLineWidth(5); 117 | ofNoFill(); 118 | ofSetColor(ofColor::orange); 119 | auto node = this->connected_connector[i]; 120 | float sx = this->center().x, sy = this->center().y, ex = node->center().x, ey = node->center().y; 121 | ofBeginShape(); 122 | ofVertex(sx, sy); 123 | ofBezierVertex(sx + (ex - sx) * 0.3, sy, ex - (ex - sx) * 0.3, ey, ex, ey); 124 | ofEndShape(); 125 | ofFill(); 126 | 127 | ofSetColor(type_color(std::string(this->connectable_type->name()))); 128 | ofDrawCircle(node->center().x, node->center().y, 7); 129 | } 130 | 131 | if (this->selected) { 132 | float sx = this->center().x, sy = this->center().y, ex = this->drag_point.x - 10, ey = this->drag_point.y; 133 | ofSetLineWidth(5); 134 | ofNoFill(); 135 | ofSetColor(ofColor::orange); 136 | ofBeginShape(); 137 | ofVertex(sx, sy); 138 | ofBezierVertex(sx + (ex - sx) * 0.3, sy, ex - (ex - sx) * 0.3, ey, ex, ey); 139 | ofEndShape(); 140 | } 141 | 142 | ofFill(); 143 | ofSetColor(type_color(std::string(this->connectable_type->name()))); 144 | ofDrawCircle(this->center().x, this->center().y, this->selected ? 10 : 7); 145 | ofNoFill(); 146 | ofSetColor(ofColor::white); 147 | this->label_font.drawString(this->tag, this->frame.origin.x, this->center().y - 10); 148 | } 149 | 150 | Connector::Connector(Node *parent_node, std::type_info *connectable_type, Connector::Type type) : parent_node(parent_node), parent_connector(nullptr), type(type), connectable_type(connectable_type) { 151 | this->frame.size.width = 14; 152 | this->frame.size.height = 14; 153 | this->label_font.load("arial.ttf", 8); 154 | this->identifier = Connector::shared_observer()->watch(Connector::MouseReleaseNotification, [=] (std::tuple t) { 155 | auto p = std::get<0>(t); 156 | auto c = std::get<1>(t); 157 | if (this != c) { 158 | if (this->parent_node != c->get_parent_node() && this->hitTest(p.x, p.y)) { 159 | c->connect(this); 160 | } 161 | } 162 | }); 163 | 164 | ofAddListener(ofEvents().mousePressed, this, &Connector::onConnecterPressed); 165 | ofAddListener(ofEvents().mouseReleased, this, &Connector::onConnecterReleased); 166 | ofAddListener(ofEvents().mouseDragged, this, &Connector::onConnecterDragged); 167 | } 168 | 169 | Connector::~Connector() { 170 | Connector::shared_observer()->dispose(Connector::MouseReleaseNotification, this->identifier); 171 | } 172 | } 173 | -------------------------------------------------------------------------------- /src/lib/AeonKitMapper/src/ModuleImporter/ModuleImporter.hpp: -------------------------------------------------------------------------------- 1 | // 2 | // ModuleImporter.hpp 3 | // AeonNodeEditor 4 | // 5 | // Created by Akira Matsuda on 3/13/16. 6 | // 7 | // 8 | 9 | #ifndef ModuleImporter_hpp 10 | #define ModuleImporter_hpp 11 | 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include "AeonKitMapper.hpp" 20 | #include "ofxHierarchy.h" 21 | 22 | namespace AeonKitMapper { 23 | class ModuleImporter { 24 | public: 25 | static void import(ofxHierarchy::View *view, std::vector *modules) { 26 | std::ifstream ifs(ofToDataPath("graph.amg")); 27 | std::string str; 28 | if (ifs.fail()) { 29 | std::cerr << "失敗" << std::endl; 30 | return; 31 | } 32 | 33 | std::map module_map; 34 | while (getline(ifs, str)) { 35 | std::vector param; 36 | std::vector module_string; 37 | boost::split(module_string, str, boost::is_any_of(" ")); 38 | 39 | AeonNode::Node *node1 = nullptr; 40 | std::string n1 = module_string[0]; 41 | boost::split(param, n1, boost::is_any_of(":")); 42 | node1 = module_map[param[0]]; 43 | if (node1 == nullptr) { 44 | node1 = ModuleImporter::node_from_string(param); 45 | module_map[param[0]] = node1; 46 | view->add_subview(node1); 47 | modules->push_back(node1); 48 | } 49 | std::string tag1 = param[2]; 50 | 51 | AeonNode::Node *node2 = nullptr; 52 | std::string n2 = module_string[1]; 53 | boost::split(param, n2, boost::is_any_of(":")); 54 | node2 = module_map[param[0]]; 55 | if (node2 == nullptr) { 56 | node2 = ModuleImporter::node_from_string(param); 57 | module_map[param[0]] = node2; 58 | view->add_subview(node2); 59 | modules->push_back(node2); 60 | } 61 | std::string tag2 = param[2]; 62 | 63 | auto c1 = node1->tag_for_connector(tag1, AeonNode::Connector::Type::Output); 64 | auto c2 = node2->tag_for_connector(tag2, AeonNode::Connector::Type::Input); 65 | c1->connect(c2); 66 | } 67 | } 68 | 69 | static AeonNode::Node* node_from_string(std::vector param) { 70 | static float offset = 100; 71 | std::string label = param[0]; 72 | AeonNode::Node *node = nullptr; 73 | if (label == "BOOL") { 74 | node = new AeonKitMapper::LogicBooleanModule(offset, offset); 75 | } 76 | else if (label == "NOT") { 77 | node = new AeonKitMapper::LogicNOTModule(offset, offset); 78 | } 79 | else if (label == "AND") { 80 | node = new AeonKitMapper::LogicANDModule(offset, offset); 81 | } 82 | else if (label == "OR") { 83 | node = new AeonKitMapper::LogicORModule(offset, offset); 84 | } 85 | else if (label == "XOR") { 86 | node = new AeonKitMapper::LogicXORModule(offset, offset); 87 | } 88 | else if (label == "HapticPatternGenerator") { 89 | node = new AeonKitMapper::HapticPatternGeneratorModule(offset, offset); 90 | auto v = dynamic_cast(node); 91 | if (param.size() == 4) { 92 | v->type = (AeonKitMapper::HapticDisplay::HapticPattern)std::atoi(param[3].c_str()); 93 | } 94 | } 95 | else if (label == "Counter") { 96 | node = new AeonKitMapper::CounterModule(offset, offset); 97 | } 98 | // else if (label == "StringConverter_Int") { 99 | // node = new AeonKitMapper::StringConverterModule(offset, offset); 100 | // } 101 | // else if (label == "StringConverter_Float") { 102 | // node = new AeonKitMapper::StringConverterModule(offset, offset); 103 | // } 104 | // else if (label == "StringConverter_Bool") { 105 | // node = new AeonKitMapper::StringConverterModule(offset, offset); 106 | // } 107 | else if (label == "Value") { 108 | node = new AeonKitMapper::ValueModule(offset, offset); 109 | auto v = dynamic_cast *>(node); 110 | if (param.size() == 4) { 111 | v->set_value(std::atoi(param[3].c_str())); 112 | } 113 | } 114 | // else if (label == "Value_Float") { 115 | // node = new AeonKitMapper::ValueModule(offset, offset); 116 | // } 117 | else if (label == "Condition") { 118 | node = new AeonKitMapper::ConditionModule(offset, offset); 119 | auto v = dynamic_cast *>(node); 120 | if (param.size() == 4) { 121 | v->type = (AeonKitMapper::ComparisonType)std::atoi(param[3].c_str()); 122 | } 123 | } 124 | // else if (label == "Condition_Float") { 125 | // node = new AeonKitMapper::ConditionModule(offset, offset); 126 | // } 127 | // else if (label == "Condition_Bool") { 128 | // node = new AeonKitMapper::ConditionModule(offset, offset); 129 | // } 130 | else if (label == "OLEDDisplay") { 131 | node = new AeonKitMapper::OLEDDisplay(offset, offset); 132 | if (param.size() == 4) { 133 | auto hardware = dynamic_cast(node); 134 | hardware->set_device_name(param[3]); 135 | } 136 | } 137 | else if (label == "HapticDisplay") { 138 | node = new AeonKitMapper::HapticDisplay(offset, offset); 139 | if (param.size() == 4) { 140 | auto hardware = dynamic_cast(node); 141 | hardware->set_device_name(param[3]); 142 | } 143 | } 144 | else if (label == "DepthSensor") { 145 | node = new AeonKitMapper::DepthSensor(offset, offset); 146 | if (param.size() == 4) { 147 | auto hardware = dynamic_cast(node); 148 | hardware->set_device_name(param[3]); 149 | } 150 | } 151 | else if (label == "TiltSensor") { 152 | node = new AeonKitMapper::TiltSensor(offset, offset); 153 | if (param.size() == 4) { 154 | auto hardware = dynamic_cast(node); 155 | hardware->set_device_name(param[3]); 156 | } 157 | } 158 | else if (label == "TouchSensor") { 159 | node = new AeonKitMapper::TouchSensor(offset, offset); 160 | if (param.size() == 4) { 161 | auto hardware = dynamic_cast(node); 162 | hardware->set_device_name(param[3]); 163 | } 164 | } 165 | 166 | if (node != nullptr) { 167 | offset = node->getMaxY(); 168 | } 169 | 170 | return node; 171 | } 172 | }; 173 | } 174 | 175 | #endif /* ModuleImporter_hpp */ 176 | -------------------------------------------------------------------------------- /src/ofApp.cpp: -------------------------------------------------------------------------------- 1 | #include "ofApp.h" 2 | 3 | //-------------------------------------------------------------- 4 | void ofApp::setup(){ 5 | ofSetBackgroundColor(0, 0, 0, 255); 6 | this->view.frame = ofxHierarchy::Rect({0, 0, (float)ofGetWidth(), (float)ofGetHeight()}); 7 | 8 | this->gui = new ofxDatGui(); 9 | this->gui->setWidth(200); 10 | 11 | auto export_button = this->gui->addButton("Export"); 12 | export_button->onButtonEvent(this, &ofApp::onExportButtonEvent); 13 | 14 | auto folder = this->gui->addFolder("Logic Modules"); 15 | std::vector modules = {"Boolean", "Not", "AND", "OR", "XOR"}; 16 | for (int i = 0; i < modules.size(); i++) { 17 | auto button = folder->addButton(modules[i]); 18 | button->onButtonEvent(this, &ofApp::onAddModuleButtonEvent); 19 | button->setTheme(new ofxDatGuiThemeAqua()); 20 | } 21 | 22 | folder = this->gui->addFolder("Utility Modules"); 23 | modules = {"HapticPattern", "Counter", "Value_Int", "StringConverter_Int", "StringConverter_Float", "StringConverter_Bool"}; 24 | for (int i = 0; i < modules.size(); i++) { 25 | auto button = folder->addButton(modules[i]); 26 | button->onButtonEvent(this, &ofApp::onAddModuleButtonEvent); 27 | button->setTheme(new ofxDatGuiThemeAqua()); 28 | } 29 | 30 | folder = this->gui->addFolder("Condition Modules"); 31 | modules = {"Condition_Int", "Condition_Bool"}; 32 | for (int i = 0; i < modules.size(); i++) { 33 | auto button = folder->addButton(modules[i]); 34 | button->onButtonEvent(this, &ofApp::onAddModuleButtonEvent); 35 | button->setTheme(new ofxDatGuiThemeAqua()); 36 | } 37 | 38 | folder = this->gui->addFolder("Display Modules"); 39 | modules = {"OLED", "Haptic"}; 40 | for (int i = 0; i < modules.size(); i++) { 41 | auto button = folder->addButton(modules[i]); 42 | button->onButtonEvent(this, &ofApp::onAddModuleButtonEvent); 43 | button->setTheme(new ofxDatGuiThemeAqua()); 44 | } 45 | 46 | folder = this->gui->addFolder("Sensor Modules"); 47 | modules = {"Depth", "Tilt", "Touch"}; 48 | for (int i = 0; i < modules.size(); i++) { 49 | auto button = folder->addButton(modules[i]); 50 | button->onButtonEvent(this, &ofApp::onAddModuleButtonEvent); 51 | button->setTheme(new ofxDatGuiThemeAqua()); 52 | } 53 | 54 | AeonKitMapper::ModuleImporter::import(&this->view, &this->modules); 55 | } 56 | 57 | //-------------------------------------------------------------- 58 | void ofApp::update(){ 59 | this->gui->update(); 60 | } 61 | 62 | //-------------------------------------------------------------- 63 | void ofApp::draw(){ 64 | this->gui->draw(); 65 | this->view.draw(); 66 | } 67 | 68 | //-------------------------------------------------------------- 69 | void ofApp::keyPressed(int key){ 70 | if (key == 'f') { 71 | ofToggleFullscreen(); 72 | } 73 | } 74 | 75 | //-------------------------------------------------------------- 76 | void ofApp::keyReleased(int key){} 77 | 78 | //-------------------------------------------------------------- 79 | void ofApp::mouseMoved(int x, int y ){} 80 | 81 | //-------------------------------------------------------------- 82 | void ofApp::mouseDragged(int x, int y, int button){} 83 | 84 | //-------------------------------------------------------------- 85 | void ofApp::mousePressed(int x, int y, int button){} 86 | 87 | //-------------------------------------------------------------- 88 | void ofApp::mouseReleased(int x, int y, int button){} 89 | 90 | //-------------------------------------------------------------- 91 | void ofApp::mouseEntered(int x, int y){} 92 | 93 | //-------------------------------------------------------------- 94 | void ofApp::mouseExited(int x, int y){} 95 | 96 | //-------------------------------------------------------------- 97 | void ofApp::windowResized(int w, int h){} 98 | 99 | //-------------------------------------------------------------- 100 | void ofApp::gotMessage(ofMessage msg){} 101 | 102 | //-------------------------------------------------------------- 103 | void ofApp::dragEvent(ofDragInfo dragInfo){} 104 | 105 | void ofApp::onExportButtonEvent(ofxDatGuiButtonEvent e) { 106 | AeonKitMapper::ModuleExporter::export_module_relation(this->modules); 107 | } 108 | 109 | float offset = 250; 110 | void ofApp::onAddModuleButtonEvent(ofxDatGuiButtonEvent e) { 111 | AeonNode::Node *node = nullptr; 112 | std::string label = e.target->getLabel(); 113 | if (label == "BOOLEAN") { 114 | node = new AeonKitMapper::LogicBooleanModule(offset, offset); 115 | } 116 | else if (label == "NOT") { 117 | node = new AeonKitMapper::LogicNOTModule(offset, offset); 118 | } 119 | else if (label == "AND") { 120 | node = new AeonKitMapper::LogicANDModule(offset, offset); 121 | } 122 | else if (label == "OR") { 123 | node = new AeonKitMapper::LogicORModule(offset, offset); 124 | } 125 | else if (label == "XOR") { 126 | node = new AeonKitMapper::LogicXORModule(offset, offset); 127 | } 128 | else if (label == "HAPTICPATTERN") { 129 | node = new AeonKitMapper::HapticPatternGeneratorModule(offset, offset); 130 | } 131 | else if (label == "COUNTER") { 132 | node = new AeonKitMapper::CounterModule(offset, offset); 133 | } 134 | else if (label == "STRINGCONVERTER_INT") { 135 | node = new AeonKitMapper::StringConverterModule(offset, offset); 136 | } 137 | else if (label == "VALUE_INT") { 138 | node = new AeonKitMapper::ValueModule(offset, offset); 139 | } 140 | else if (label == "VALUE_FLOAT") { 141 | node = new AeonKitMapper::ValueModule(offset, offset); 142 | } 143 | else if (label == "STRINGCONVERTER_FLOAT") { 144 | node = new AeonKitMapper::StringConverterModule(offset, offset); 145 | } 146 | else if (label == "STRINGCONVERTER_BOOL") { 147 | node = new AeonKitMapper::StringConverterModule(offset, offset); 148 | } 149 | else if (label == "CONDITION_INT") { 150 | node = new AeonKitMapper::ConditionModule(offset, offset); 151 | } 152 | else if (label == "CONDITION_FLOAT") { 153 | node = new AeonKitMapper::ConditionModule(offset, offset); 154 | } 155 | else if (label == "CONDITION_BOOL") { 156 | node = new AeonKitMapper::ConditionModule(offset, offset); 157 | } 158 | else if (label == "OLED") { 159 | node = new AeonKitMapper::OLEDDisplay(offset, offset); 160 | } 161 | else if (label == "HAPTIC") { 162 | node = new AeonKitMapper::HapticDisplay(offset, offset); 163 | } 164 | else if (label == "DEPTH") { 165 | node = new AeonKitMapper::DepthSensor(offset, offset); 166 | } 167 | else if (label == "TILT") { 168 | node = new AeonKitMapper::TiltSensor(offset, offset); 169 | } 170 | else if (label == "TOUCH") { 171 | node = new AeonKitMapper::TouchSensor(offset, offset); 172 | } 173 | 174 | if (node != nullptr) { 175 | this->modules.push_back(node); 176 | this->view.add_subview(node); 177 | offset = node->getMaxY(); 178 | } 179 | } 180 | -------------------------------------------------------------------------------- /config.make: -------------------------------------------------------------------------------- 1 | ################################################################################ 2 | # CONFIGURE PROJECT MAKEFILE (optional) 3 | # This file is where we make project specific configurations. 4 | ################################################################################ 5 | 6 | ################################################################################ 7 | # OF ROOT 8 | # The location of your root openFrameworks installation 9 | # (default) OF_ROOT = ../../.. 10 | ################################################################################ 11 | # OF_ROOT = ../../.. 12 | 13 | ################################################################################ 14 | # PROJECT ROOT 15 | # The location of the project - a starting place for searching for files 16 | # (default) PROJECT_ROOT = . (this directory) 17 | # 18 | ################################################################################ 19 | # PROJECT_ROOT = . 20 | 21 | ################################################################################ 22 | # PROJECT SPECIFIC CHECKS 23 | # This is a project defined section to create internal makefile flags to 24 | # conditionally enable or disable the addition of various features within 25 | # this makefile. For instance, if you want to make changes based on whether 26 | # GTK is installed, one might test that here and create a variable to check. 27 | ################################################################################ 28 | # None 29 | 30 | ################################################################################ 31 | # PROJECT EXTERNAL SOURCE PATHS 32 | # These are fully qualified paths that are not within the PROJECT_ROOT folder. 33 | # Like source folders in the PROJECT_ROOT, these paths are subject to 34 | # exlclusion via the PROJECT_EXLCUSIONS list. 35 | # 36 | # (default) PROJECT_EXTERNAL_SOURCE_PATHS = (blank) 37 | # 38 | # Note: Leave a leading space when adding list items with the += operator 39 | ################################################################################ 40 | # PROJECT_EXTERNAL_SOURCE_PATHS = 41 | 42 | ################################################################################ 43 | # PROJECT EXCLUSIONS 44 | # These makefiles assume that all folders in your current project directory 45 | # and any listed in the PROJECT_EXTERNAL_SOURCH_PATHS are are valid locations 46 | # to look for source code. The any folders or files that match any of the 47 | # items in the PROJECT_EXCLUSIONS list below will be ignored. 48 | # 49 | # Each item in the PROJECT_EXCLUSIONS list will be treated as a complete 50 | # string unless teh user adds a wildcard (%) operator to match subdirectories. 51 | # GNU make only allows one wildcard for matching. The second wildcard (%) is 52 | # treated literally. 53 | # 54 | # (default) PROJECT_EXCLUSIONS = (blank) 55 | # 56 | # Will automatically exclude the following: 57 | # 58 | # $(PROJECT_ROOT)/bin% 59 | # $(PROJECT_ROOT)/obj% 60 | # $(PROJECT_ROOT)/%.xcodeproj 61 | # 62 | # Note: Leave a leading space when adding list items with the += operator 63 | ################################################################################ 64 | # PROJECT_EXCLUSIONS = 65 | 66 | ################################################################################ 67 | # PROJECT LINKER FLAGS 68 | # These flags will be sent to the linker when compiling the executable. 69 | # 70 | # (default) PROJECT_LDFLAGS = -Wl,-rpath=./libs 71 | # 72 | # Note: Leave a leading space when adding list items with the += operator 73 | ################################################################################ 74 | 75 | # Currently, shared libraries that are needed are copied to the 76 | # $(PROJECT_ROOT)/bin/libs directory. The following LDFLAGS tell the linker to 77 | # add a runtime path to search for those shared libraries, since they aren't 78 | # incorporated directly into the final executable application binary. 79 | # TODO: should this be a default setting? 80 | # PROJECT_LDFLAGS=-Wl,-rpath=./libs 81 | 82 | ################################################################################ 83 | # PROJECT DEFINES 84 | # Create a space-delimited list of DEFINES. The list will be converted into 85 | # CFLAGS with the "-D" flag later in the makefile. 86 | # 87 | # (default) PROJECT_DEFINES = (blank) 88 | # 89 | # Note: Leave a leading space when adding list items with the += operator 90 | ################################################################################ 91 | # PROJECT_DEFINES = 92 | 93 | ################################################################################ 94 | # PROJECT CFLAGS 95 | # This is a list of fully qualified CFLAGS required when compiling for this 96 | # project. These CFLAGS will be used IN ADDITION TO the PLATFORM_CFLAGS 97 | # defined in your platform specific core configuration files. These flags are 98 | # presented to the compiler BEFORE the PROJECT_OPTIMIZATION_CFLAGS below. 99 | # 100 | # (default) PROJECT_CFLAGS = (blank) 101 | # 102 | # Note: Before adding PROJECT_CFLAGS, note that the PLATFORM_CFLAGS defined in 103 | # your platform specific configuration file will be applied by default and 104 | # further flags here may not be needed. 105 | # 106 | # Note: Leave a leading space when adding list items with the += operator 107 | ################################################################################ 108 | # PROJECT_CFLAGS = 109 | 110 | ################################################################################ 111 | # PROJECT OPTIMIZATION CFLAGS 112 | # These are lists of CFLAGS that are target-specific. While any flags could 113 | # be conditionally added, they are usually limited to optimization flags. 114 | # These flags are added BEFORE the PROJECT_CFLAGS. 115 | # 116 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE flags are only applied to RELEASE targets. 117 | # 118 | # (default) PROJECT_OPTIMIZATION_CFLAGS_RELEASE = (blank) 119 | # 120 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG flags are only applied to DEBUG targets. 121 | # 122 | # (default) PROJECT_OPTIMIZATION_CFLAGS_DEBUG = (blank) 123 | # 124 | # Note: Before adding PROJECT_OPTIMIZATION_CFLAGS, please note that the 125 | # PLATFORM_OPTIMIZATION_CFLAGS defined in your platform specific configuration 126 | # file will be applied by default and further optimization flags here may not 127 | # be needed. 128 | # 129 | # Note: Leave a leading space when adding list items with the += operator 130 | ################################################################################ 131 | # PROJECT_OPTIMIZATION_CFLAGS_RELEASE = 132 | # PROJECT_OPTIMIZATION_CFLAGS_DEBUG = 133 | 134 | ################################################################################ 135 | # PROJECT COMPILERS 136 | # Custom compilers can be set for CC and CXX 137 | # (default) PROJECT_CXX = (blank) 138 | # (default) PROJECT_CC = (blank) 139 | # Note: Leave a leading space when adding list items with the += operator 140 | ################################################################################ 141 | # PROJECT_CXX = 142 | # PROJECT_CC = 143 | -------------------------------------------------------------------------------- /AeonNodeEditor.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Debug 10 | x64 11 | 12 | 13 | Release 14 | Win32 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | {7FD42DF7-442E-479A-BA76-D0022F99702A} 23 | Win32Proj 24 | AeonNodeEditor 25 | 26 | 27 | 28 | Application 29 | Unicode 30 | v140 31 | 32 | 33 | Application 34 | Unicode 35 | v140 36 | 37 | 38 | Application 39 | Unicode 40 | true 41 | v140 42 | 43 | 44 | Application 45 | Unicode 46 | true 47 | v140 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | bin\ 69 | obj\$(Configuration)\ 70 | $(ProjectName)_debug 71 | true 72 | true 73 | 74 | 75 | bin\ 76 | obj\$(Configuration)\ 77 | $(ProjectName)_debug 78 | true 79 | true 80 | 81 | 82 | bin\ 83 | obj\$(Configuration)\ 84 | false 85 | 86 | 87 | bin\ 88 | obj\$(Configuration)\ 89 | false 90 | 91 | 92 | 93 | Disabled 94 | EnableFastChecks 95 | %(PreprocessorDefinitions) 96 | MultiThreadedDebugDLL 97 | Level3 98 | %(AdditionalIncludeDirectories);src;src\AeonNodeEditor 99 | CompileAsCpp 100 | 101 | 102 | true 103 | Console 104 | false 105 | %(AdditionalDependencies) 106 | %(AdditionalLibraryDirectories) 107 | 108 | 109 | 110 | 111 | 112 | Disabled 113 | EnableFastChecks 114 | %(PreprocessorDefinitions) 115 | MultiThreadedDebugDLL 116 | Level3 117 | %(AdditionalIncludeDirectories);src;src\AeonNodeEditor 118 | CompileAsCpp 119 | true 120 | 121 | 122 | true 123 | Console 124 | false 125 | %(AdditionalDependencies) 126 | %(AdditionalLibraryDirectories) 127 | 128 | 129 | 130 | 131 | 132 | false 133 | %(PreprocessorDefinitions) 134 | MultiThreadedDLL 135 | Level3 136 | %(AdditionalIncludeDirectories);src;src\AeonNodeEditor 137 | CompileAsCpp 138 | true 139 | 140 | 141 | false 142 | false 143 | Console 144 | true 145 | true 146 | false 147 | %(AdditionalDependencies) 148 | %(AdditionalLibraryDirectories) 149 | 150 | 151 | 152 | 153 | 154 | false 155 | %(PreprocessorDefinitions) 156 | MultiThreadedDLL 157 | Level3 158 | %(AdditionalIncludeDirectories);src;src\AeonNodeEditor 159 | CompileAsCpp 160 | 161 | 162 | false 163 | false 164 | Console 165 | true 166 | true 167 | false 168 | %(AdditionalDependencies) 169 | %(AdditionalLibraryDirectories) 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | {5837595d-aca9-485c-8e76-729040ce4b0b} 185 | 186 | 187 | 188 | 189 | /D_DEBUG %(AdditionalOptions) 190 | /D_DEBUG %(AdditionalOptions) 191 | $(OF_ROOT)\libs\openFrameworksCompiled\project\vs 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | -------------------------------------------------------------------------------- /AeonNodeEditor.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 08DB6C53A3565A6DEB025E65 /* Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 25B37904B5001247EDF633BA /* Node.cpp */; }; 11 | 214222E9104F4F8834D94CB8 /* SensorModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 075D39EA5F17F36A03F0B12F /* SensorModule.cpp */; }; 12 | 40575BC42E6DB2A73DBCBD94 /* DisplayModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 69E01F62249A3650A0C85734 /* DisplayModule.cpp */; }; 13 | 512CABC2429BAEAA018305C3 /* StringConverterModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 211CAB43D3E45EC0F935E4A5 /* StringConverterModule.cpp */; }; 14 | 6DC9090E7B430623979A96F3 /* LogicModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53E4CB1A117A5BB6452ED760 /* LogicModule.cpp */; }; 15 | 80E510683E0CA819D6601B12 /* CounterModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CCD1F9A2C7C12136C23E21C1 /* CounterModule.cpp */; }; 16 | 855E56368094E59DF71D4471 /* Connector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1C4E0F10252716DACC38929F /* Connector.cpp */; }; 17 | 95A8A4726D64C739094E0FCB /* HardwareModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8C7E464565E686082F260FB8 /* HardwareModule.cpp */; }; 18 | 9CF4130A7E6DA19A3DC42B9A /* ofxSmartFont.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C954E0E8B7DB9D6983309883 /* ofxSmartFont.cpp */; }; 19 | AD2BFDFC32FD89FBD4EC657A /* ConditionModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07F51780B867D37078409E89 /* ConditionModule.cpp */; }; 20 | C9466C434D1CF8AB968D298D /* ofxDatGui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26490D7CC31EF7D6ED5F925A /* ofxDatGui.cpp */; }; 21 | D3C1C48E59CAA2D68C0DD477 /* ofxDatGuiComponent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3E3B8F332A1A3C7EDF4998 /* ofxDatGuiComponent.cpp */; }; 22 | DB7374183D60F14B5BEDC2C4 /* thunderclap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A07AFDA743CC96DA03E26F6F /* thunderclap.cpp */; }; 23 | DDAB943DCC3E9E9B009B4A13 /* Module.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B7D8BEAA531A329847B85672 /* Module.cpp */; }; 24 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E4328148138ABC890047C5CB /* openFrameworksDebug.a */; }; 25 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1D0A3A1BDC003C02F2 /* main.cpp */; }; 26 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */; }; 27 | E94BDC571C9560A900A19658 /* ModuleCore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E94BDC551C9560A900A19658 /* ModuleCore.cpp */; }; 28 | E94BDC601C9570A600A19658 /* ModuleImporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E94BDC5E1C9570A600A19658 /* ModuleImporter.cpp */; }; 29 | E9AB5A441C94AAC100B4B8EA /* ValueModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9AB5A421C94AAC100B4B8EA /* ValueModule.cpp */; }; 30 | E9AB5A4A1C94AD9900B4B8EA /* HapticPatternGeneratorModule.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9AB5A481C94AD9900B4B8EA /* HapticPatternGeneratorModule.cpp */; }; 31 | E9CCC01A1C95907D004E06E8 /* HardwareModuleCore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9CCC0181C95907D004E06E8 /* HardwareModuleCore.cpp */; }; 32 | F22AEE6ED97C684907181FE9 /* ofxHierarchy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DF027D62430F87942CC96DFC /* ofxHierarchy.cpp */; }; 33 | F8AE409FAF15C4964D1A0EB8 /* ModuleExporter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D8D60D2652E2D29F322390E2 /* ModuleExporter.cpp */; }; 34 | /* End PBXBuildFile section */ 35 | 36 | /* Begin PBXContainerItemProxy section */ 37 | E4328147138ABC890047C5CB /* PBXContainerItemProxy */ = { 38 | isa = PBXContainerItemProxy; 39 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 40 | proxyType = 2; 41 | remoteGlobalIDString = E4B27C1510CBEB8E00536013; 42 | remoteInfo = openFrameworks; 43 | }; 44 | E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */ = { 45 | isa = PBXContainerItemProxy; 46 | containerPortal = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 47 | proxyType = 1; 48 | remoteGlobalIDString = E4B27C1410CBEB8E00536013; 49 | remoteInfo = openFrameworks; 50 | }; 51 | /* End PBXContainerItemProxy section */ 52 | 53 | /* Begin PBXCopyFilesBuildPhase section */ 54 | E4C2427710CC5ABF004149E2 /* CopyFiles */ = { 55 | isa = PBXCopyFilesBuildPhase; 56 | buildActionMask = 2147483647; 57 | dstPath = ""; 58 | dstSubfolderSpec = 10; 59 | files = ( 60 | ); 61 | runOnlyForDeploymentPostprocessing = 0; 62 | }; 63 | /* End PBXCopyFilesBuildPhase section */ 64 | 65 | /* Begin PBXFileReference section */ 66 | 04C339FF9ADCF05DF2DA62A3 /* ofxDatGuiTextInputField.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiTextInputField.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGuiTextInputField.h; sourceTree = SOURCE_ROOT; }; 67 | 075D39EA5F17F36A03F0B12F /* SensorModule.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = SensorModule.cpp; path = src/lib/AeonKitMapper/src/Module/Hardware/SensorModule/SensorModule.cpp; sourceTree = SOURCE_ROOT; }; 68 | 079A7FF91BE27393A6A50EC6 /* StringConverterModule.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = StringConverterModule.hpp; path = src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule/detail/StringConverterModule.hpp; sourceTree = SOURCE_ROOT; }; 69 | 07F51780B867D37078409E89 /* ConditionModule.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ConditionModule.cpp; path = src/lib/AeonKitMapper/src/Module/Condition/ConditionModule.cpp; sourceTree = SOURCE_ROOT; }; 70 | 0A42C807BEF3A18E8E105A3B /* ofxDatGuiTimeGraph.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiTimeGraph.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGuiTimeGraph.h; sourceTree = SOURCE_ROOT; }; 71 | 125144E9EDC659B1B11F477A /* StringConverterModule.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = StringConverterModule.hpp; path = src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule/StringConverterModule.hpp; sourceTree = SOURCE_ROOT; }; 72 | 1A3E3B8F332A1A3C7EDF4998 /* ofxDatGuiComponent.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxDatGuiComponent.cpp; path = ../../../addons/ofxDatGui/src/core/ofxDatGuiComponent.cpp; sourceTree = SOURCE_ROOT; }; 73 | 1C4E0F10252716DACC38929F /* Connector.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = Connector.cpp; path = src/lib/AeonNode/src/Connector.cpp; sourceTree = SOURCE_ROOT; }; 74 | 211CAB43D3E45EC0F935E4A5 /* StringConverterModule.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = StringConverterModule.cpp; path = src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule/StringConverterModule.cpp; sourceTree = SOURCE_ROOT; }; 75 | 21E1E3071CB7B11914428B62 /* ofxDatGuiThemes.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiThemes.h; path = ../../../addons/ofxDatGui/src/themes/ofxDatGuiThemes.h; sourceTree = SOURCE_ROOT; }; 76 | 25B37904B5001247EDF633BA /* Node.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = Node.cpp; path = src/lib/AeonNode/src/Node.cpp; sourceTree = SOURCE_ROOT; }; 77 | 26490D7CC31EF7D6ED5F925A /* ofxDatGui.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxDatGui.cpp; path = ../../../addons/ofxDatGui/src/ofxDatGui.cpp; sourceTree = SOURCE_ROOT; }; 78 | 422C4E1AAC7EC4D30B17702D /* ofxDatGuiIntObject.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiIntObject.h; path = ../../../addons/ofxDatGui/src/core/ofxDatGuiIntObject.h; sourceTree = SOURCE_ROOT; }; 79 | 45A4C05324ACB2AE7FE9904A /* Connector.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Connector.hpp; path = src/lib/AeonNode/src/Connector.hpp; sourceTree = SOURCE_ROOT; }; 80 | 49B40392829587FFC75BA016 /* ModuleExporter.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ModuleExporter.hpp; path = src/lib/AeonKitMapper/src/ModuleExporter/ModuleExporter.hpp; sourceTree = SOURCE_ROOT; }; 81 | 529FBC5E39B881C608B2E073 /* ConditionModule.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ConditionModule.hpp; path = src/lib/AeonKitMapper/src/Module/Condition/detail/ConditionModule.hpp; sourceTree = SOURCE_ROOT; }; 82 | 53E4CB1A117A5BB6452ED760 /* LogicModule.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = LogicModule.cpp; path = src/lib/AeonKitMapper/src/Module/Logic/LogicModule.cpp; sourceTree = SOURCE_ROOT; }; 83 | 545BBA6F6669BED2DA497BC6 /* ofxDatGuiScrollView.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiScrollView.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGuiScrollView.h; sourceTree = SOURCE_ROOT; }; 84 | 55E1586A6DCB7E93820F0BC1 /* ConditionModule.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ConditionModule.hpp; path = src/lib/AeonKitMapper/src/Module/Condition/ConditionModule.hpp; sourceTree = SOURCE_ROOT; }; 85 | 64C563B8158C37E9D07AE29D /* ofxDatGuiFRM.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiFRM.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGuiFRM.h; sourceTree = SOURCE_ROOT; }; 86 | 66419C72C9E4F738804E17A4 /* Module.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Module.hpp; path = src/lib/AeonKitMapper/src/Module/Module.hpp; sourceTree = SOURCE_ROOT; }; 87 | 69E01F62249A3650A0C85734 /* DisplayModule.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = DisplayModule.cpp; path = src/lib/AeonKitMapper/src/Module/Hardware/DisplayModule/DisplayModule.cpp; sourceTree = SOURCE_ROOT; }; 88 | 744031A3E8F8DAF9FE6F3EA8 /* ofxDatGuiGroups.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiGroups.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGuiGroups.h; sourceTree = SOURCE_ROOT; }; 89 | 787315438BF1DD00C81DF413 /* ofxDatGuiLabel.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiLabel.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGuiLabel.h; sourceTree = SOURCE_ROOT; }; 90 | 81B15ECE2AFE7709C43B78F7 /* LogicModule.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = LogicModule.hpp; path = src/lib/AeonKitMapper/src/Module/Logic/LogicModule.hpp; sourceTree = SOURCE_ROOT; }; 91 | 896211FFD7650884437CE42C /* ofxSmartFont.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxSmartFont.h; path = ../../../addons/ofxDatGui/src/libs/ofxSmartFont/ofxSmartFont.h; sourceTree = SOURCE_ROOT; }; 92 | 8C7E464565E686082F260FB8 /* HardwareModule.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = HardwareModule.cpp; path = src/lib/AeonKitMapper/src/Module/Hardware/HardwareModule.cpp; sourceTree = SOURCE_ROOT; }; 93 | 8EA7BC601AB3E11B67FC302B /* Node.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Node.hpp; path = src/lib/AeonNode/src/Node.hpp; sourceTree = SOURCE_ROOT; }; 94 | 902724601B82C6AD81BBCD71 /* ofxDatGui2dPad.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGui2dPad.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGui2dPad.h; sourceTree = SOURCE_ROOT; }; 95 | 912D52402F936D79D5B87129 /* ofxHierarchy.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxHierarchy.h; path = ../../../addons/ofxHierarchy/src/ofxHierarchy.h; sourceTree = SOURCE_ROOT; }; 96 | 9705D66270ED89ECA6E6FECE /* ofxDatGui.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGui.h; path = ../../../addons/ofxDatGui/src/ofxDatGui.h; sourceTree = SOURCE_ROOT; }; 97 | 9B5051062C6A871714E6F5F4 /* ofxDatGuiConstants.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiConstants.h; path = ../../../addons/ofxDatGui/src/core/ofxDatGuiConstants.h; sourceTree = SOURCE_ROOT; }; 98 | 9C3C1C6B6C61C7189AA1A909 /* CounterModule.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = CounterModule.hpp; path = src/lib/AeonKitMapper/src/Module/Utility/CounterModule/CounterModule.hpp; sourceTree = SOURCE_ROOT; }; 99 | A07AFDA743CC96DA03E26F6F /* thunderclap.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = thunderclap.cpp; path = src/lib/AeonNode/lib/thunderclap/thunderclap.cpp; sourceTree = SOURCE_ROOT; }; 100 | B498F0559F473CF855EF6062 /* ofxDatGuiTheme.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiTheme.h; path = ../../../addons/ofxDatGui/src/themes/ofxDatGuiTheme.h; sourceTree = SOURCE_ROOT; }; 101 | B7D8BEAA531A329847B85672 /* Module.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = Module.cpp; path = src/lib/AeonKitMapper/src/Module/Module.cpp; sourceTree = SOURCE_ROOT; }; 102 | BB5CF7DF2141B800CEB39B03 /* thunderclap.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = thunderclap.h; path = src/lib/AeonNode/lib/thunderclap/thunderclap.h; sourceTree = SOURCE_ROOT; }; 103 | BCC84C6EB3417706F4F762F0 /* ofxDatGuiComponent.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiComponent.h; path = ../../../addons/ofxDatGui/src/core/ofxDatGuiComponent.h; sourceTree = SOURCE_ROOT; }; 104 | C085A33340AB0C1DB647AC2F /* ofxDatGuiTextInput.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiTextInput.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGuiTextInput.h; sourceTree = SOURCE_ROOT; }; 105 | C70165DF7E17144C0D1443F6 /* Module.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = Module.hpp; path = src/lib/AeonKitMapper/src/Module/detail/Module.hpp; sourceTree = SOURCE_ROOT; }; 106 | C84ED7FCC017328C6F58283D /* ofxDatGuiColorPicker.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiColorPicker.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGuiColorPicker.h; sourceTree = SOURCE_ROOT; }; 107 | C91373327B250A6246394AF4 /* thunderclap.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = thunderclap.h; path = src/lib/AeonNode/lib/thunderclap/detail/thunderclap.h; sourceTree = SOURCE_ROOT; }; 108 | C954E0E8B7DB9D6983309883 /* ofxSmartFont.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxSmartFont.cpp; path = ../../../addons/ofxDatGui/src/libs/ofxSmartFont/ofxSmartFont.cpp; sourceTree = SOURCE_ROOT; }; 109 | CCD1F9A2C7C12136C23E21C1 /* CounterModule.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = CounterModule.cpp; path = src/lib/AeonKitMapper/src/Module/Utility/CounterModule/CounterModule.cpp; sourceTree = SOURCE_ROOT; }; 110 | CDF7278CB636137FE7BF91A5 /* ofxDatGuiMatrix.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiMatrix.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGuiMatrix.h; sourceTree = SOURCE_ROOT; }; 111 | D0D6A66BEBA820EA1D396889 /* ofxDatGuiSlider.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiSlider.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGuiSlider.h; sourceTree = SOURCE_ROOT; }; 112 | D4621EA7B4F163D9E7F4033A /* HardwareModule.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = HardwareModule.hpp; path = src/lib/AeonKitMapper/src/Module/Hardware/HardwareModule.hpp; sourceTree = SOURCE_ROOT; }; 113 | D8D60D2652E2D29F322390E2 /* ModuleExporter.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ModuleExporter.cpp; path = src/lib/AeonKitMapper/src/ModuleExporter/ModuleExporter.cpp; sourceTree = SOURCE_ROOT; }; 114 | DF027D62430F87942CC96DFC /* ofxHierarchy.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 30; name = ofxHierarchy.cpp; path = ../../../addons/ofxHierarchy/src/ofxHierarchy.cpp; sourceTree = SOURCE_ROOT; }; 115 | E100ED9DCB412957A879CD5A /* ofxDatGuiControls.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiControls.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGuiControls.h; sourceTree = SOURCE_ROOT; }; 116 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = openFrameworksLib.xcodeproj; path = ../../../libs/openFrameworksCompiled/project/osx/openFrameworksLib.xcodeproj; sourceTree = SOURCE_ROOT; }; 117 | E4B69B5B0A3A1756003C02F2 /* AeonNodeEditorDebug.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AeonNodeEditorDebug.app; sourceTree = BUILT_PRODUCTS_DIR; }; 118 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = SOURCE_ROOT; }; 119 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; name = ofApp.cpp; path = src/ofApp.cpp; sourceTree = SOURCE_ROOT; }; 120 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = ofApp.h; path = src/ofApp.h; sourceTree = SOURCE_ROOT; }; 121 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = "openFrameworks-Info.plist"; sourceTree = ""; }; 122 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = CoreOF.xcconfig; path = ../../../libs/openFrameworksCompiled/project/osx/CoreOF.xcconfig; sourceTree = SOURCE_ROOT; }; 123 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Project.xcconfig; sourceTree = ""; }; 124 | E94BDC551C9560A900A19658 /* ModuleCore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ModuleCore.cpp; path = lib/AeonKitMapper/src/Module/ModuleCore.cpp; sourceTree = ""; }; 125 | E94BDC561C9560A900A19658 /* ModuleCore.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = ModuleCore.hpp; path = lib/AeonKitMapper/src/Module/ModuleCore.hpp; sourceTree = ""; }; 126 | E94BDC5E1C9570A600A19658 /* ModuleImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ModuleImporter.cpp; sourceTree = ""; }; 127 | E94BDC5F1C9570A600A19658 /* ModuleImporter.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = ModuleImporter.hpp; sourceTree = ""; }; 128 | E9AB5A421C94AAC100B4B8EA /* ValueModule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ValueModule.cpp; sourceTree = ""; }; 129 | E9AB5A431C94AAC100B4B8EA /* ValueModule.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = ValueModule.hpp; sourceTree = ""; }; 130 | E9AB5A461C94AC5C00B4B8EA /* ValueModule.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = ValueModule.hpp; sourceTree = ""; }; 131 | E9AB5A481C94AD9900B4B8EA /* HapticPatternGeneratorModule.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HapticPatternGeneratorModule.cpp; sourceTree = ""; }; 132 | E9AB5A491C94AD9900B4B8EA /* HapticPatternGeneratorModule.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = HapticPatternGeneratorModule.hpp; sourceTree = ""; }; 133 | E9CCC0181C95907D004E06E8 /* HardwareModuleCore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HardwareModuleCore.cpp; path = lib/AeonKitMapper/src/Module/Hardware/HardwareModuleCore.cpp; sourceTree = ""; }; 134 | E9CCC0191C95907D004E06E8 /* HardwareModuleCore.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = HardwareModuleCore.hpp; path = lib/AeonKitMapper/src/Module/Hardware/HardwareModuleCore.hpp; sourceTree = ""; }; 135 | ED6DC4D524FBCD5B356FD28E /* SensorModule.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = SensorModule.hpp; path = src/lib/AeonKitMapper/src/Module/Hardware/SensorModule/SensorModule.hpp; sourceTree = SOURCE_ROOT; }; 136 | F2FC15FF181F45C1E43F3100 /* DisplayModule.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = DisplayModule.hpp; path = src/lib/AeonKitMapper/src/Module/Hardware/DisplayModule/DisplayModule.hpp; sourceTree = SOURCE_ROOT; }; 137 | F59384ED57A7C6A7A8B0351D /* ofxDatGuiEvents.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiEvents.h; path = ../../../addons/ofxDatGui/src/core/ofxDatGuiEvents.h; sourceTree = SOURCE_ROOT; }; 138 | F67065828C04E93F7E52FBE3 /* AeonKitMapper.hpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = AeonKitMapper.hpp; path = src/lib/AeonKitMapper/src/AeonKitMapper.hpp; sourceTree = SOURCE_ROOT; }; 139 | FDA86F4C2F1F1964D35391C6 /* ofxDatGuiButton.h */ = {isa = PBXFileReference; explicitFileType = sourcecode.c.h; fileEncoding = 30; name = ofxDatGuiButton.h; path = ../../../addons/ofxDatGui/src/components/ofxDatGuiButton.h; sourceTree = SOURCE_ROOT; }; 140 | /* End PBXFileReference section */ 141 | 142 | /* Begin PBXFrameworksBuildPhase section */ 143 | E4B69B590A3A1756003C02F2 /* Frameworks */ = { 144 | isa = PBXFrameworksBuildPhase; 145 | buildActionMask = 2147483647; 146 | files = ( 147 | E4328149138ABC9F0047C5CB /* openFrameworksDebug.a in Frameworks */, 148 | ); 149 | runOnlyForDeploymentPostprocessing = 0; 150 | }; 151 | /* End PBXFrameworksBuildPhase section */ 152 | 153 | /* Begin PBXGroup section */ 154 | 086AEC516EA9E79A639D71E6 /* lib */ = { 155 | isa = PBXGroup; 156 | children = ( 157 | ); 158 | name = lib; 159 | sourceTree = ""; 160 | }; 161 | 0C0D632E522C1189318A972A /* Hardware */ = { 162 | isa = PBXGroup; 163 | children = ( 164 | E9CCC0181C95907D004E06E8 /* HardwareModuleCore.cpp */, 165 | E9CCC0191C95907D004E06E8 /* HardwareModuleCore.hpp */, 166 | 8C7E464565E686082F260FB8 /* HardwareModule.cpp */, 167 | D4621EA7B4F163D9E7F4033A /* HardwareModule.hpp */, 168 | BEEAAB4048F60DE071D6E1C1 /* SensorModule */, 169 | 68B46786950008BC11C358D6 /* DisplayModule */, 170 | ); 171 | name = Hardware; 172 | sourceTree = ""; 173 | }; 174 | 0EF29D3ABD6E4147AE024D7A /* ofxSmartFont */ = { 175 | isa = PBXGroup; 176 | children = ( 177 | C954E0E8B7DB9D6983309883 /* ofxSmartFont.cpp */, 178 | 896211FFD7650884437CE42C /* ofxSmartFont.h */, 179 | ); 180 | name = ofxSmartFont; 181 | sourceTree = ""; 182 | }; 183 | 18A1010FB16C856654DA54B7 /* thunderclap */ = { 184 | isa = PBXGroup; 185 | children = ( 186 | 477F537A100F08C387F21F2E /* detail */, 187 | A07AFDA743CC96DA03E26F6F /* thunderclap.cpp */, 188 | BB5CF7DF2141B800CEB39B03 /* thunderclap.h */, 189 | ); 190 | name = thunderclap; 191 | sourceTree = ""; 192 | }; 193 | 26863FA70EB657088B7EEFBD /* StringConverterModule */ = { 194 | isa = PBXGroup; 195 | children = ( 196 | E1A4F9B867CE8DF669D23EF1 /* detail */, 197 | 211CAB43D3E45EC0F935E4A5 /* StringConverterModule.cpp */, 198 | 125144E9EDC659B1B11F477A /* StringConverterModule.hpp */, 199 | ); 200 | name = StringConverterModule; 201 | sourceTree = ""; 202 | }; 203 | 29D38AEBCD5EB6CB70952E0E /* Module */ = { 204 | isa = PBXGroup; 205 | children = ( 206 | B3B75549B5E0901365B9F278 /* Utility */, 207 | FDD498D9276DFBE3DB7C6E37 /* Condition */, 208 | 0C0D632E522C1189318A972A /* Hardware */, 209 | 420CF6183EDE5F3631887241 /* Logic */, 210 | 7C6F90530F65324BDE40FE0D /* detail */, 211 | B7D8BEAA531A329847B85672 /* Module.cpp */, 212 | 66419C72C9E4F738804E17A4 /* Module.hpp */, 213 | E94BDC551C9560A900A19658 /* ModuleCore.cpp */, 214 | E94BDC561C9560A900A19658 /* ModuleCore.hpp */, 215 | ); 216 | name = Module; 217 | sourceTree = ""; 218 | }; 219 | 34D34744CA985C09666740A6 /* src */ = { 220 | isa = PBXGroup; 221 | children = ( 222 | 1C4E0F10252716DACC38929F /* Connector.cpp */, 223 | 45A4C05324ACB2AE7FE9904A /* Connector.hpp */, 224 | 25B37904B5001247EDF633BA /* Node.cpp */, 225 | 8EA7BC601AB3E11B67FC302B /* Node.hpp */, 226 | ); 227 | name = src; 228 | sourceTree = ""; 229 | }; 230 | 420CF6183EDE5F3631887241 /* Logic */ = { 231 | isa = PBXGroup; 232 | children = ( 233 | 53E4CB1A117A5BB6452ED760 /* LogicModule.cpp */, 234 | 81B15ECE2AFE7709C43B78F7 /* LogicModule.hpp */, 235 | ); 236 | name = Logic; 237 | sourceTree = ""; 238 | }; 239 | 477F537A100F08C387F21F2E /* detail */ = { 240 | isa = PBXGroup; 241 | children = ( 242 | C91373327B250A6246394AF4 /* thunderclap.h */, 243 | ); 244 | name = detail; 245 | sourceTree = ""; 246 | }; 247 | 5C19F65F15FF688E86155961 /* AeonNode */ = { 248 | isa = PBXGroup; 249 | children = ( 250 | A4E153870C94A4D90E4F399F /* lib */, 251 | 34D34744CA985C09666740A6 /* src */, 252 | ); 253 | name = AeonNode; 254 | sourceTree = ""; 255 | }; 256 | 68B46786950008BC11C358D6 /* DisplayModule */ = { 257 | isa = PBXGroup; 258 | children = ( 259 | 69E01F62249A3650A0C85734 /* DisplayModule.cpp */, 260 | F2FC15FF181F45C1E43F3100 /* DisplayModule.hpp */, 261 | ); 262 | name = DisplayModule; 263 | sourceTree = ""; 264 | }; 265 | 69146F0BA46E48E576618E5E /* libs */ = { 266 | isa = PBXGroup; 267 | children = ( 268 | 0EF29D3ABD6E4147AE024D7A /* ofxSmartFont */, 269 | ); 270 | name = libs; 271 | sourceTree = ""; 272 | }; 273 | 6948EE371B920CB800B5AC1A /* local_addons */ = { 274 | isa = PBXGroup; 275 | children = ( 276 | ); 277 | name = local_addons; 278 | sourceTree = ""; 279 | }; 280 | 77AD907E5E5FA2D7DB1E611F /* ofxHierarchy */ = { 281 | isa = PBXGroup; 282 | children = ( 283 | FFF3D8DD1B67C349C3AE85E5 /* src */, 284 | ); 285 | name = ofxHierarchy; 286 | sourceTree = ""; 287 | }; 288 | 7C6F90530F65324BDE40FE0D /* detail */ = { 289 | isa = PBXGroup; 290 | children = ( 291 | C70165DF7E17144C0D1443F6 /* Module.hpp */, 292 | ); 293 | name = detail; 294 | sourceTree = ""; 295 | }; 296 | 8393D57D0DC6B215DF168629 /* ModuleExporter */ = { 297 | isa = PBXGroup; 298 | children = ( 299 | D8D60D2652E2D29F322390E2 /* ModuleExporter.cpp */, 300 | 49B40392829587FFC75BA016 /* ModuleExporter.hpp */, 301 | ); 302 | name = ModuleExporter; 303 | sourceTree = ""; 304 | }; 305 | 8870759BC9CAEA1E4E9EA3A8 /* core */ = { 306 | isa = PBXGroup; 307 | children = ( 308 | 1A3E3B8F332A1A3C7EDF4998 /* ofxDatGuiComponent.cpp */, 309 | BCC84C6EB3417706F4F762F0 /* ofxDatGuiComponent.h */, 310 | 9B5051062C6A871714E6F5F4 /* ofxDatGuiConstants.h */, 311 | F59384ED57A7C6A7A8B0351D /* ofxDatGuiEvents.h */, 312 | 422C4E1AAC7EC4D30B17702D /* ofxDatGuiIntObject.h */, 313 | ); 314 | name = core; 315 | sourceTree = ""; 316 | }; 317 | 8975E2D222EF564B42E5C807 /* AeonKitMapper */ = { 318 | isa = PBXGroup; 319 | children = ( 320 | 086AEC516EA9E79A639D71E6 /* lib */, 321 | 92479A0B7EEAA3083F2BA6B4 /* src */, 322 | ); 323 | name = AeonKitMapper; 324 | sourceTree = ""; 325 | }; 326 | 911FE1C75E520EE70A7B4830 /* themes */ = { 327 | isa = PBXGroup; 328 | children = ( 329 | B498F0559F473CF855EF6062 /* ofxDatGuiTheme.h */, 330 | 21E1E3071CB7B11914428B62 /* ofxDatGuiThemes.h */, 331 | ); 332 | name = themes; 333 | sourceTree = ""; 334 | }; 335 | 92479A0B7EEAA3083F2BA6B4 /* src */ = { 336 | isa = PBXGroup; 337 | children = ( 338 | F67065828C04E93F7E52FBE3 /* AeonKitMapper.hpp */, 339 | 8393D57D0DC6B215DF168629 /* ModuleExporter */, 340 | E94BDC5D1C95709B00A19658 /* ModuleImporter */, 341 | 29D38AEBCD5EB6CB70952E0E /* Module */, 342 | ); 343 | name = src; 344 | sourceTree = ""; 345 | }; 346 | 947FCD1248D8B0A16B53C1AA /* components */ = { 347 | isa = PBXGroup; 348 | children = ( 349 | 902724601B82C6AD81BBCD71 /* ofxDatGui2dPad.h */, 350 | FDA86F4C2F1F1964D35391C6 /* ofxDatGuiButton.h */, 351 | C84ED7FCC017328C6F58283D /* ofxDatGuiColorPicker.h */, 352 | E100ED9DCB412957A879CD5A /* ofxDatGuiControls.h */, 353 | 64C563B8158C37E9D07AE29D /* ofxDatGuiFRM.h */, 354 | 744031A3E8F8DAF9FE6F3EA8 /* ofxDatGuiGroups.h */, 355 | 787315438BF1DD00C81DF413 /* ofxDatGuiLabel.h */, 356 | CDF7278CB636137FE7BF91A5 /* ofxDatGuiMatrix.h */, 357 | 545BBA6F6669BED2DA497BC6 /* ofxDatGuiScrollView.h */, 358 | D0D6A66BEBA820EA1D396889 /* ofxDatGuiSlider.h */, 359 | C085A33340AB0C1DB647AC2F /* ofxDatGuiTextInput.h */, 360 | 04C339FF9ADCF05DF2DA62A3 /* ofxDatGuiTextInputField.h */, 361 | 0A42C807BEF3A18E8E105A3B /* ofxDatGuiTimeGraph.h */, 362 | ); 363 | name = components; 364 | sourceTree = ""; 365 | }; 366 | 948442A4E189C9D81D26B6A8 /* CounterModule */ = { 367 | isa = PBXGroup; 368 | children = ( 369 | CCD1F9A2C7C12136C23E21C1 /* CounterModule.cpp */, 370 | 9C3C1C6B6C61C7189AA1A909 /* CounterModule.hpp */, 371 | ); 372 | name = CounterModule; 373 | sourceTree = ""; 374 | }; 375 | 965168FECD51AAD1D9169011 /* lib */ = { 376 | isa = PBXGroup; 377 | children = ( 378 | 8975E2D222EF564B42E5C807 /* AeonKitMapper */, 379 | 5C19F65F15FF688E86155961 /* AeonNode */, 380 | ); 381 | name = lib; 382 | sourceTree = ""; 383 | }; 384 | A4E153870C94A4D90E4F399F /* lib */ = { 385 | isa = PBXGroup; 386 | children = ( 387 | 18A1010FB16C856654DA54B7 /* thunderclap */, 388 | ); 389 | name = lib; 390 | sourceTree = ""; 391 | }; 392 | B3B75549B5E0901365B9F278 /* Utility */ = { 393 | isa = PBXGroup; 394 | children = ( 395 | E9AB5A471C94AD9200B4B8EA /* HapticPatternGeneratorModule */, 396 | E9AB5A411C94AABA00B4B8EA /* ValueModule */, 397 | 948442A4E189C9D81D26B6A8 /* CounterModule */, 398 | 26863FA70EB657088B7EEFBD /* StringConverterModule */, 399 | ); 400 | name = Utility; 401 | sourceTree = ""; 402 | }; 403 | BB4B014C10F69532006C3DED /* addons */ = { 404 | isa = PBXGroup; 405 | children = ( 406 | D8DD1043C333F6F63C8685E6 /* ofxDatGui */, 407 | 77AD907E5E5FA2D7DB1E611F /* ofxHierarchy */, 408 | ); 409 | name = addons; 410 | sourceTree = ""; 411 | }; 412 | BEEAAB4048F60DE071D6E1C1 /* SensorModule */ = { 413 | isa = PBXGroup; 414 | children = ( 415 | 075D39EA5F17F36A03F0B12F /* SensorModule.cpp */, 416 | ED6DC4D524FBCD5B356FD28E /* SensorModule.hpp */, 417 | ); 418 | name = SensorModule; 419 | sourceTree = ""; 420 | }; 421 | C5CEE39D771EEB0130925C2D /* detail */ = { 422 | isa = PBXGroup; 423 | children = ( 424 | 529FBC5E39B881C608B2E073 /* ConditionModule.hpp */, 425 | ); 426 | name = detail; 427 | sourceTree = ""; 428 | }; 429 | D8DD1043C333F6F63C8685E6 /* ofxDatGui */ = { 430 | isa = PBXGroup; 431 | children = ( 432 | E9B32C117486580389FAFF01 /* src */, 433 | ); 434 | name = ofxDatGui; 435 | sourceTree = ""; 436 | }; 437 | E1A4F9B867CE8DF669D23EF1 /* detail */ = { 438 | isa = PBXGroup; 439 | children = ( 440 | 079A7FF91BE27393A6A50EC6 /* StringConverterModule.hpp */, 441 | ); 442 | name = detail; 443 | sourceTree = ""; 444 | }; 445 | E4328144138ABC890047C5CB /* Products */ = { 446 | isa = PBXGroup; 447 | children = ( 448 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */, 449 | ); 450 | name = Products; 451 | sourceTree = ""; 452 | }; 453 | E4B69B4A0A3A1720003C02F2 = { 454 | isa = PBXGroup; 455 | children = ( 456 | E4B6FCAD0C3E899E008CF71C /* openFrameworks-Info.plist */, 457 | E4EB6923138AFD0F00A09F29 /* Project.xcconfig */, 458 | E4B69E1C0A3A1BDC003C02F2 /* src */, 459 | E4EEC9E9138DF44700A80321 /* openFrameworks */, 460 | BB4B014C10F69532006C3DED /* addons */, 461 | 6948EE371B920CB800B5AC1A /* local_addons */, 462 | E4B69B5B0A3A1756003C02F2 /* AeonNodeEditorDebug.app */, 463 | ); 464 | sourceTree = ""; 465 | }; 466 | E4B69E1C0A3A1BDC003C02F2 /* src */ = { 467 | isa = PBXGroup; 468 | children = ( 469 | E4B69E1D0A3A1BDC003C02F2 /* main.cpp */, 470 | E4B69E1E0A3A1BDC003C02F2 /* ofApp.cpp */, 471 | E4B69E1F0A3A1BDC003C02F2 /* ofApp.h */, 472 | 965168FECD51AAD1D9169011 /* lib */, 473 | ); 474 | path = src; 475 | sourceTree = SOURCE_ROOT; 476 | }; 477 | E4EEC9E9138DF44700A80321 /* openFrameworks */ = { 478 | isa = PBXGroup; 479 | children = ( 480 | E4EB691F138AFCF100A09F29 /* CoreOF.xcconfig */, 481 | E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */, 482 | ); 483 | name = openFrameworks; 484 | sourceTree = ""; 485 | }; 486 | E94BDC5D1C95709B00A19658 /* ModuleImporter */ = { 487 | isa = PBXGroup; 488 | children = ( 489 | E94BDC5E1C9570A600A19658 /* ModuleImporter.cpp */, 490 | E94BDC5F1C9570A600A19658 /* ModuleImporter.hpp */, 491 | ); 492 | name = ModuleImporter; 493 | path = lib/AeonKitMapper/src/ModuleImporter; 494 | sourceTree = ""; 495 | }; 496 | E9AB5A411C94AABA00B4B8EA /* ValueModule */ = { 497 | isa = PBXGroup; 498 | children = ( 499 | E9AB5A451C94AC5200B4B8EA /* detail */, 500 | E9AB5A421C94AAC100B4B8EA /* ValueModule.cpp */, 501 | E9AB5A431C94AAC100B4B8EA /* ValueModule.hpp */, 502 | ); 503 | name = ValueModule; 504 | path = lib/AeonKitMapper/src/Module/Utility/ValueModule; 505 | sourceTree = ""; 506 | }; 507 | E9AB5A451C94AC5200B4B8EA /* detail */ = { 508 | isa = PBXGroup; 509 | children = ( 510 | E9AB5A461C94AC5C00B4B8EA /* ValueModule.hpp */, 511 | ); 512 | path = detail; 513 | sourceTree = ""; 514 | }; 515 | E9AB5A471C94AD9200B4B8EA /* HapticPatternGeneratorModule */ = { 516 | isa = PBXGroup; 517 | children = ( 518 | E9AB5A481C94AD9900B4B8EA /* HapticPatternGeneratorModule.cpp */, 519 | E9AB5A491C94AD9900B4B8EA /* HapticPatternGeneratorModule.hpp */, 520 | ); 521 | name = HapticPatternGeneratorModule; 522 | path = lib/AeonKitMapper/src/Module/Utility/HapticPatternGeneratorModule; 523 | sourceTree = ""; 524 | }; 525 | E9B32C117486580389FAFF01 /* src */ = { 526 | isa = PBXGroup; 527 | children = ( 528 | 947FCD1248D8B0A16B53C1AA /* components */, 529 | 8870759BC9CAEA1E4E9EA3A8 /* core */, 530 | 69146F0BA46E48E576618E5E /* libs */, 531 | 26490D7CC31EF7D6ED5F925A /* ofxDatGui.cpp */, 532 | 9705D66270ED89ECA6E6FECE /* ofxDatGui.h */, 533 | 911FE1C75E520EE70A7B4830 /* themes */, 534 | ); 535 | name = src; 536 | sourceTree = ""; 537 | }; 538 | FDD498D9276DFBE3DB7C6E37 /* Condition */ = { 539 | isa = PBXGroup; 540 | children = ( 541 | 07F51780B867D37078409E89 /* ConditionModule.cpp */, 542 | 55E1586A6DCB7E93820F0BC1 /* ConditionModule.hpp */, 543 | C5CEE39D771EEB0130925C2D /* detail */, 544 | ); 545 | name = Condition; 546 | sourceTree = ""; 547 | }; 548 | FFF3D8DD1B67C349C3AE85E5 /* src */ = { 549 | isa = PBXGroup; 550 | children = ( 551 | DF027D62430F87942CC96DFC /* ofxHierarchy.cpp */, 552 | 912D52402F936D79D5B87129 /* ofxHierarchy.h */, 553 | ); 554 | name = src; 555 | sourceTree = ""; 556 | }; 557 | /* End PBXGroup section */ 558 | 559 | /* Begin PBXNativeTarget section */ 560 | E4B69B5A0A3A1756003C02F2 /* AeonNodeEditor */ = { 561 | isa = PBXNativeTarget; 562 | buildConfigurationList = E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "AeonNodeEditor" */; 563 | buildPhases = ( 564 | E4B69B580A3A1756003C02F2 /* Sources */, 565 | E4B69B590A3A1756003C02F2 /* Frameworks */, 566 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */, 567 | E4C2427710CC5ABF004149E2 /* CopyFiles */, 568 | ); 569 | buildRules = ( 570 | ); 571 | dependencies = ( 572 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */, 573 | ); 574 | name = AeonNodeEditor; 575 | productName = myOFApp; 576 | productReference = E4B69B5B0A3A1756003C02F2 /* AeonNodeEditorDebug.app */; 577 | productType = "com.apple.product-type.application"; 578 | }; 579 | /* End PBXNativeTarget section */ 580 | 581 | /* Begin PBXProject section */ 582 | E4B69B4C0A3A1720003C02F2 /* Project object */ = { 583 | isa = PBXProject; 584 | attributes = { 585 | LastUpgradeCheck = 0600; 586 | }; 587 | buildConfigurationList = E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "AeonNodeEditor" */; 588 | compatibilityVersion = "Xcode 3.2"; 589 | developmentRegion = English; 590 | hasScannedForEncodings = 0; 591 | knownRegions = ( 592 | English, 593 | Japanese, 594 | French, 595 | German, 596 | ); 597 | mainGroup = E4B69B4A0A3A1720003C02F2; 598 | productRefGroup = E4B69B4A0A3A1720003C02F2; 599 | projectDirPath = ""; 600 | projectReferences = ( 601 | { 602 | ProductGroup = E4328144138ABC890047C5CB /* Products */; 603 | ProjectRef = E4328143138ABC890047C5CB /* openFrameworksLib.xcodeproj */; 604 | }, 605 | ); 606 | projectRoot = ""; 607 | targets = ( 608 | E4B69B5A0A3A1756003C02F2 /* AeonNodeEditor */, 609 | ); 610 | }; 611 | /* End PBXProject section */ 612 | 613 | /* Begin PBXReferenceProxy section */ 614 | E4328148138ABC890047C5CB /* openFrameworksDebug.a */ = { 615 | isa = PBXReferenceProxy; 616 | fileType = archive.ar; 617 | path = openFrameworksDebug.a; 618 | remoteRef = E4328147138ABC890047C5CB /* PBXContainerItemProxy */; 619 | sourceTree = BUILT_PRODUCTS_DIR; 620 | }; 621 | /* End PBXReferenceProxy section */ 622 | 623 | /* Begin PBXShellScriptBuildPhase section */ 624 | E4B6FFFD0C3F9AB9008CF71C /* ShellScript */ = { 625 | isa = PBXShellScriptBuildPhase; 626 | buildActionMask = 2147483647; 627 | files = ( 628 | ); 629 | inputPaths = ( 630 | ); 631 | outputPaths = ( 632 | ); 633 | runOnlyForDeploymentPostprocessing = 0; 634 | shellPath = /bin/sh; 635 | shellScript = "rsync -aved ../../../libs/fmodex/lib/osx/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/\"; install_name_tool -change ./libfmodex.dylib @executable_path/libfmodex.dylib \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/MacOS/$PRODUCT_NAME\";\nmkdir -p \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\nrsync -aved \"$ICON_FILE\" \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Resources/\"\nrsync -aved ../../../libs/glut/lib/osx/GLUT.framework \"$TARGET_BUILD_DIR/$PRODUCT_NAME.app/Contents/Frameworks/\"\n"; 636 | }; 637 | /* End PBXShellScriptBuildPhase section */ 638 | 639 | /* Begin PBXSourcesBuildPhase section */ 640 | E4B69B580A3A1756003C02F2 /* Sources */ = { 641 | isa = PBXSourcesBuildPhase; 642 | buildActionMask = 2147483647; 643 | files = ( 644 | E9CCC01A1C95907D004E06E8 /* HardwareModuleCore.cpp in Sources */, 645 | E4B69E200A3A1BDC003C02F2 /* main.cpp in Sources */, 646 | E94BDC601C9570A600A19658 /* ModuleImporter.cpp in Sources */, 647 | E4B69E210A3A1BDC003C02F2 /* ofApp.cpp in Sources */, 648 | AD2BFDFC32FD89FBD4EC657A /* ConditionModule.cpp in Sources */, 649 | 40575BC42E6DB2A73DBCBD94 /* DisplayModule.cpp in Sources */, 650 | 95A8A4726D64C739094E0FCB /* HardwareModule.cpp in Sources */, 651 | 214222E9104F4F8834D94CB8 /* SensorModule.cpp in Sources */, 652 | 6DC9090E7B430623979A96F3 /* LogicModule.cpp in Sources */, 653 | DDAB943DCC3E9E9B009B4A13 /* Module.cpp in Sources */, 654 | 80E510683E0CA819D6601B12 /* CounterModule.cpp in Sources */, 655 | E9AB5A441C94AAC100B4B8EA /* ValueModule.cpp in Sources */, 656 | 512CABC2429BAEAA018305C3 /* StringConverterModule.cpp in Sources */, 657 | F8AE409FAF15C4964D1A0EB8 /* ModuleExporter.cpp in Sources */, 658 | DB7374183D60F14B5BEDC2C4 /* thunderclap.cpp in Sources */, 659 | E94BDC571C9560A900A19658 /* ModuleCore.cpp in Sources */, 660 | 855E56368094E59DF71D4471 /* Connector.cpp in Sources */, 661 | 08DB6C53A3565A6DEB025E65 /* Node.cpp in Sources */, 662 | D3C1C48E59CAA2D68C0DD477 /* ofxDatGuiComponent.cpp in Sources */, 663 | E9AB5A4A1C94AD9900B4B8EA /* HapticPatternGeneratorModule.cpp in Sources */, 664 | 9CF4130A7E6DA19A3DC42B9A /* ofxSmartFont.cpp in Sources */, 665 | C9466C434D1CF8AB968D298D /* ofxDatGui.cpp in Sources */, 666 | F22AEE6ED97C684907181FE9 /* ofxHierarchy.cpp in Sources */, 667 | ); 668 | runOnlyForDeploymentPostprocessing = 0; 669 | }; 670 | /* End PBXSourcesBuildPhase section */ 671 | 672 | /* Begin PBXTargetDependency section */ 673 | E4EEB9AC138B136A00A80321 /* PBXTargetDependency */ = { 674 | isa = PBXTargetDependency; 675 | name = openFrameworks; 676 | targetProxy = E4EEB9AB138B136A00A80321 /* PBXContainerItemProxy */; 677 | }; 678 | /* End PBXTargetDependency section */ 679 | 680 | /* Begin XCBuildConfiguration section */ 681 | E4B69B4E0A3A1720003C02F2 /* Debug */ = { 682 | isa = XCBuildConfiguration; 683 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 684 | buildSettings = { 685 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; 686 | COPY_PHASE_STRIP = NO; 687 | DEAD_CODE_STRIPPING = YES; 688 | GCC_AUTO_VECTORIZATION = YES; 689 | GCC_ENABLE_SSE3_EXTENSIONS = YES; 690 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; 691 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO; 692 | GCC_OPTIMIZATION_LEVEL = 0; 693 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 694 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 695 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; 696 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; 697 | GCC_WARN_UNINITIALIZED_AUTOS = NO; 698 | GCC_WARN_UNUSED_VALUE = NO; 699 | GCC_WARN_UNUSED_VARIABLE = NO; 700 | HEADER_SEARCH_PATHS = ( 701 | "$(OF_CORE_HEADERS)", 702 | src, 703 | src/lib/AeonKitMapper/lib/ujson, 704 | src/lib/AeonKitMapper/lib/ujson/examples, 705 | src/lib/AeonKitMapper/lib/ujson/test, 706 | src/lib/AeonKitMapper/lib/ujson/test/testcases, 707 | src/lib/AeonKitMapper/lib/ujson/ujson, 708 | "src/lib/AeonKitMapper/lib/ujson/ujson/double-conversion", 709 | src/lib/AeonKitMapper/src, 710 | src/lib/AeonKitMapper/src/Module, 711 | src/lib/AeonKitMapper/src/Module/Condition, 712 | src/lib/AeonKitMapper/src/Module/Condition/detail, 713 | src/lib/AeonKitMapper/src/Module/Hardware, 714 | src/lib/AeonKitMapper/src/Module/Hardware/DisplayModule, 715 | src/lib/AeonKitMapper/src/Module/Hardware/SensorModule, 716 | src/lib/AeonKitMapper/src/Module/Logic, 717 | src/lib/AeonKitMapper/src/Module/Utility/CounterModule, 718 | src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule, 719 | src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule/detail, 720 | src/lib/AeonKitMapper/src/Module/detail, 721 | src/lib/AeonKitMapper/src/ModuleExporter, 722 | src/lib/AeonNode/lib/thunderclap, 723 | src/lib/AeonNode/lib/thunderclap/detail, 724 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj, 725 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/project.xcworkspace, 726 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/project.xcworkspace/xcshareddata, 727 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/project.xcworkspace/xcuserdata/Akira.xcuserdatad, 728 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/xcuserdata/Akira.xcuserdatad/xcschemes, 729 | src/lib/AeonNode/src, 730 | ../../../addons/ofxDatGui/src, 731 | ../../../addons/ofxDatGui/src/components, 732 | ../../../addons/ofxDatGui/src/core, 733 | ../../../addons/ofxDatGui/src/libs, 734 | ../../../addons/ofxDatGui/src/libs/ofxSmartFont, 735 | ../../../addons/ofxDatGui/src/themes, 736 | ../../../addons/ofxHierarchy/src, 737 | ../../../addons/ofxSmartFont/src, 738 | ); 739 | MACOSX_DEPLOYMENT_TARGET = 10.8; 740 | ONLY_ACTIVE_ARCH = YES; 741 | OTHER_CPLUSPLUSFLAGS = ( 742 | "-D__MACOSX_CORE__", 743 | "-mtune=native", 744 | ); 745 | SDKROOT = macosx; 746 | }; 747 | name = Debug; 748 | }; 749 | E4B69B4F0A3A1720003C02F2 /* Release */ = { 750 | isa = XCBuildConfiguration; 751 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 752 | buildSettings = { 753 | CONFIGURATION_BUILD_DIR = "$(SRCROOT)/bin/"; 754 | COPY_PHASE_STRIP = YES; 755 | DEAD_CODE_STRIPPING = YES; 756 | GCC_AUTO_VECTORIZATION = YES; 757 | GCC_ENABLE_SSE3_EXTENSIONS = YES; 758 | GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS = YES; 759 | GCC_INLINES_ARE_PRIVATE_EXTERN = NO; 760 | GCC_OPTIMIZATION_LEVEL = 3; 761 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 762 | GCC_UNROLL_LOOPS = YES; 763 | GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = YES; 764 | GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO = NO; 765 | GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL = NO; 766 | GCC_WARN_UNINITIALIZED_AUTOS = NO; 767 | GCC_WARN_UNUSED_VALUE = NO; 768 | GCC_WARN_UNUSED_VARIABLE = NO; 769 | HEADER_SEARCH_PATHS = ( 770 | "$(OF_CORE_HEADERS)", 771 | src, 772 | src/lib/AeonKitMapper/lib/ujson, 773 | src/lib/AeonKitMapper/lib/ujson/examples, 774 | src/lib/AeonKitMapper/lib/ujson/test, 775 | src/lib/AeonKitMapper/lib/ujson/test/testcases, 776 | src/lib/AeonKitMapper/lib/ujson/ujson, 777 | "src/lib/AeonKitMapper/lib/ujson/ujson/double-conversion", 778 | src/lib/AeonKitMapper/src, 779 | src/lib/AeonKitMapper/src/Module, 780 | src/lib/AeonKitMapper/src/Module/Condition, 781 | src/lib/AeonKitMapper/src/Module/Condition/detail, 782 | src/lib/AeonKitMapper/src/Module/Hardware, 783 | src/lib/AeonKitMapper/src/Module/Hardware/DisplayModule, 784 | src/lib/AeonKitMapper/src/Module/Hardware/SensorModule, 785 | src/lib/AeonKitMapper/src/Module/Logic, 786 | src/lib/AeonKitMapper/src/Module/Utility/CounterModule, 787 | src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule, 788 | src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule/detail, 789 | src/lib/AeonKitMapper/src/Module/detail, 790 | src/lib/AeonKitMapper/src/ModuleExporter, 791 | src/lib/AeonNode/lib/thunderclap, 792 | src/lib/AeonNode/lib/thunderclap/detail, 793 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj, 794 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/project.xcworkspace, 795 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/project.xcworkspace/xcshareddata, 796 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/project.xcworkspace/xcuserdata/Akira.xcuserdatad, 797 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/xcuserdata/Akira.xcuserdatad/xcschemes, 798 | src/lib/AeonNode/src, 799 | ../../../addons/ofxDatGui/src, 800 | ../../../addons/ofxDatGui/src/components, 801 | ../../../addons/ofxDatGui/src/core, 802 | ../../../addons/ofxDatGui/src/libs, 803 | ../../../addons/ofxDatGui/src/libs/ofxSmartFont, 804 | ../../../addons/ofxDatGui/src/themes, 805 | ../../../addons/ofxHierarchy/src, 806 | ../../../addons/ofxSmartFont/src, 807 | ); 808 | MACOSX_DEPLOYMENT_TARGET = 10.8; 809 | OTHER_CPLUSPLUSFLAGS = ( 810 | "-D__MACOSX_CORE__", 811 | "-mtune=native", 812 | ); 813 | SDKROOT = macosx; 814 | }; 815 | name = Release; 816 | }; 817 | E4B69B600A3A1757003C02F2 /* Debug */ = { 818 | isa = XCBuildConfiguration; 819 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 820 | buildSettings = { 821 | COMBINE_HIDPI_IMAGES = YES; 822 | COPY_PHASE_STRIP = NO; 823 | FRAMEWORK_SEARCH_PATHS = ( 824 | "$(inherited)", 825 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 826 | ); 827 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; 828 | GCC_DYNAMIC_NO_PIC = NO; 829 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 830 | GCC_MODEL_TUNING = NONE; 831 | HEADER_SEARCH_PATHS = ( 832 | "$(OF_CORE_HEADERS)", 833 | src, 834 | src/lib/AeonKitMapper/lib/ujson, 835 | src/lib/AeonKitMapper/lib/ujson/examples, 836 | src/lib/AeonKitMapper/lib/ujson/test, 837 | src/lib/AeonKitMapper/lib/ujson/test/testcases, 838 | src/lib/AeonKitMapper/lib/ujson/ujson, 839 | "src/lib/AeonKitMapper/lib/ujson/ujson/double-conversion", 840 | src/lib/AeonKitMapper/src, 841 | src/lib/AeonKitMapper/src/Module, 842 | src/lib/AeonKitMapper/src/Module/Condition, 843 | src/lib/AeonKitMapper/src/Module/Condition/detail, 844 | src/lib/AeonKitMapper/src/Module/Hardware, 845 | src/lib/AeonKitMapper/src/Module/Hardware/DisplayModule, 846 | src/lib/AeonKitMapper/src/Module/Hardware/SensorModule, 847 | src/lib/AeonKitMapper/src/Module/Logic, 848 | src/lib/AeonKitMapper/src/Module/Utility/CounterModule, 849 | src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule, 850 | src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule/detail, 851 | src/lib/AeonKitMapper/src/Module/detail, 852 | src/lib/AeonKitMapper/src/ModuleExporter, 853 | src/lib/AeonNode/lib/thunderclap, 854 | src/lib/AeonNode/lib/thunderclap/detail, 855 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj, 856 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/project.xcworkspace, 857 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/project.xcworkspace/xcshareddata, 858 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/project.xcworkspace/xcuserdata/Akira.xcuserdatad, 859 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/xcuserdata/Akira.xcuserdatad/xcschemes, 860 | src/lib/AeonNode/src, 861 | ../../../addons/ofxDatGui/src, 862 | ../../../addons/ofxDatGui/src/components, 863 | ../../../addons/ofxDatGui/src/core, 864 | ../../../addons/ofxDatGui/src/libs, 865 | ../../../addons/ofxDatGui/src/libs/ofxSmartFont, 866 | ../../../addons/ofxDatGui/src/themes, 867 | ../../../addons/ofxHierarchy/src, 868 | ../../../addons/ofxSmartFont/src, 869 | ); 870 | ICON = "$(ICON_NAME_DEBUG)"; 871 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)"; 872 | INFOPLIST_FILE = "openFrameworks-Info.plist"; 873 | INSTALL_PATH = "$(HOME)/Applications"; 874 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 875 | PRODUCT_NAME = "$(TARGET_NAME)Debug"; 876 | WRAPPER_EXTENSION = app; 877 | }; 878 | name = Debug; 879 | }; 880 | E4B69B610A3A1757003C02F2 /* Release */ = { 881 | isa = XCBuildConfiguration; 882 | baseConfigurationReference = E4EB6923138AFD0F00A09F29 /* Project.xcconfig */; 883 | buildSettings = { 884 | COMBINE_HIDPI_IMAGES = YES; 885 | COPY_PHASE_STRIP = YES; 886 | FRAMEWORK_SEARCH_PATHS = ( 887 | "$(inherited)", 888 | "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", 889 | ); 890 | FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)/../../../libs/glut/lib/osx\""; 891 | GCC_GENERATE_DEBUGGING_SYMBOLS = YES; 892 | GCC_MODEL_TUNING = NONE; 893 | HEADER_SEARCH_PATHS = ( 894 | "$(OF_CORE_HEADERS)", 895 | src, 896 | src/lib/AeonKitMapper/lib/ujson, 897 | src/lib/AeonKitMapper/lib/ujson/examples, 898 | src/lib/AeonKitMapper/lib/ujson/test, 899 | src/lib/AeonKitMapper/lib/ujson/test/testcases, 900 | src/lib/AeonKitMapper/lib/ujson/ujson, 901 | "src/lib/AeonKitMapper/lib/ujson/ujson/double-conversion", 902 | src/lib/AeonKitMapper/src, 903 | src/lib/AeonKitMapper/src/Module, 904 | src/lib/AeonKitMapper/src/Module/Condition, 905 | src/lib/AeonKitMapper/src/Module/Condition/detail, 906 | src/lib/AeonKitMapper/src/Module/Hardware, 907 | src/lib/AeonKitMapper/src/Module/Hardware/DisplayModule, 908 | src/lib/AeonKitMapper/src/Module/Hardware/SensorModule, 909 | src/lib/AeonKitMapper/src/Module/Logic, 910 | src/lib/AeonKitMapper/src/Module/Utility/CounterModule, 911 | src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule, 912 | src/lib/AeonKitMapper/src/Module/Utility/StringConverterModule/detail, 913 | src/lib/AeonKitMapper/src/Module/detail, 914 | src/lib/AeonKitMapper/src/ModuleExporter, 915 | src/lib/AeonNode/lib/thunderclap, 916 | src/lib/AeonNode/lib/thunderclap/detail, 917 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj, 918 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/project.xcworkspace, 919 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/project.xcworkspace/xcshareddata, 920 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/project.xcworkspace/xcuserdata/Akira.xcuserdatad, 921 | src/lib/AeonNode/lib/thunderclap/thunderclap.xcodeproj/xcuserdata/Akira.xcuserdatad/xcschemes, 922 | src/lib/AeonNode/src, 923 | ../../../addons/ofxDatGui/src, 924 | ../../../addons/ofxDatGui/src/components, 925 | ../../../addons/ofxDatGui/src/core, 926 | ../../../addons/ofxDatGui/src/libs, 927 | ../../../addons/ofxDatGui/src/libs/ofxSmartFont, 928 | ../../../addons/ofxDatGui/src/themes, 929 | ../../../addons/ofxHierarchy/src, 930 | ../../../addons/ofxSmartFont/src, 931 | ); 932 | ICON = "$(ICON_NAME_RELEASE)"; 933 | ICON_FILE = "$(ICON_FILE_PATH)$(ICON)"; 934 | INFOPLIST_FILE = "openFrameworks-Info.plist"; 935 | INSTALL_PATH = "$(HOME)/Applications"; 936 | LIBRARY_SEARCH_PATHS = "$(inherited)"; 937 | PRODUCT_NAME = "$(TARGET_NAME)"; 938 | WRAPPER_EXTENSION = app; 939 | baseConfigurationReference = E4EB6923138AFD0F00A09F29; 940 | }; 941 | name = Release; 942 | }; 943 | /* End XCBuildConfiguration section */ 944 | 945 | /* Begin XCConfigurationList section */ 946 | E4B69B4D0A3A1720003C02F2 /* Build configuration list for PBXProject "AeonNodeEditor" */ = { 947 | isa = XCConfigurationList; 948 | buildConfigurations = ( 949 | E4B69B4E0A3A1720003C02F2 /* Debug */, 950 | E4B69B4F0A3A1720003C02F2 /* Release */, 951 | ); 952 | defaultConfigurationIsVisible = 0; 953 | defaultConfigurationName = Release; 954 | }; 955 | E4B69B5F0A3A1757003C02F2 /* Build configuration list for PBXNativeTarget "AeonNodeEditor" */ = { 956 | isa = XCConfigurationList; 957 | buildConfigurations = ( 958 | E4B69B600A3A1757003C02F2 /* Debug */, 959 | E4B69B610A3A1757003C02F2 /* Release */, 960 | ); 961 | defaultConfigurationIsVisible = 0; 962 | defaultConfigurationName = Release; 963 | }; 964 | /* End XCConfigurationList section */ 965 | }; 966 | rootObject = E4B69B4C0A3A1720003C02F2 /* Project object */; 967 | } 968 | --------------------------------------------------------------------------------