Esempio n. 1
0
// Set up the controls in the ofxControlPanel
void testApp::setupControlPanel(){
    
	gui.setup("Gateway", 10, 10, 350, 640);
    gui.addPanel("Hand", 1);
    gui.setWhichPanel("Hand");
	gui.addLabel("'f' to toggle fullscreen \n'h' to toggle this panel \n");
	gui.addSlider("Min Beam Magnitude",		"MIN_BEAM_MAGNITUDE",		100.0,	10.0, 200.0,	false);
    //gui.addChartPlotter(string name, guiStatVarPointer varPtr, float width, float height, int maxNum, float minYVal, float maxYVal)
    //guiStatVarPointer(string displayNameIn, void *varPtr, guiVarType theDataType, bool autoUpdateGraph)
    gui.addChartPlotter("L Hand Chart", guiStatVarPointer("Left Hand Magnitude", &leftHandMagnitude, GUI_VAR_FLOAT, true), 200, 100, 200, 0.f, 200.f);
    gui.addChartPlotter("R Hand Chart", guiStatVarPointer("Right Hand Magnitude", &rightHandMagnitude, GUI_VAR_FLOAT, true), 200, 100, 200, 0.f, 200.f);
    gui.addSlider("Velocity scale factor", "VELOCITY_SCALE", 1.f, 0.f, 20.f, false);
    gui.addSlider("Width scale factor", "WIDTH_SCALE", 1.f, 0.f, 4.f, false);
    gui.addSlider("Min Width", "MIN_WIDTH", 2, 0, 40, true);
    gui.addToggle("Clear Beams", "CLEAR_BEAMS", false);

	gui.loadSettings("controlPanelSettings.xml");
}
Esempio n. 2
0
void testApp::setupGUI(){
    ofxControlPanel::setBackgroundColor(simpleColor(30, 30, 30, 200));
	ofxControlPanel::setTextColor(simpleColor(240, 240, 240, 255));
    
    int guiWidth = 800;
    int guiHeight = 800;
    
    gui.setup("Sync", 0, 0, guiWidth, guiHeight, true); // string controlPanelName, float panelX, float panelY, float width, float height, bool doSaveRestore
	gui.addPanel("Line", 3, false); // name, number of columns, locked
	gui.addPanel("Tracking", 3, false); // name, number of columns, locked    
    gui.addPanel("App", 3, false); //just doing playback/recording on keyboard for now.....
    
	//--------- PANEL 0, Line Variables
	gui.setWhichPanel("Line");
	gui.setWhichColumn(0);
    gui.addSlider("Length of History", "HISTORY_LENGTH", 100, 2, 200, true);
    gui.addToggle("Fade History?", "DO_HISTORY_FADE", 1);
    gui.addSlider("Line scale", "LINE_SCALE", 1.f, 1.f, 1000.f, false);
    gui.addSlider("Line width", "LINE_WIDTH", 1.f, 1.f, 20.f, false);
    gui.addSlider("Line alpha", "LINE_ALPHA", 128, 1, 255, true); 
    
	//--------- PANEL 1, Tracking Variables
	gui.setWhichPanel("Tracking");
	gui.setWhichColumn(0);
    
    skeletonDrawer.setTheOpenNI(theOpenNI);
    //gui.addDrawableRect("Video Image", &theOpenNI->getimageTextureReference(), 320, 240);
    gui.addCustomRect("Video and skeleton", &skeletonDrawer, 320, 240);
    gui.addDrawableRect("Depth Image", &theOpenNI->getDepthTextureReference(), 320, 240);
    gui.setWhichColumn(2);
    gui.addToggle("All points tracking?", "DISPLAY_ALL_POINTS", 1);
    gui.addToggle("Hip Line?", "HIP_LINE", 0);
    gui.addToggle("Shoulder Line?", "SHOULDER_LINE", 0);
    gui.addToggle("Hands Line", "HANDS_LINE", 0);  
    gui.addToggle("Hip Line to edge?", "HIP_LINE_EDGE", 0);
    gui.addToggle("Shoulder Line to edge?", "SHOULDER_LINE_EDGE", 0);
    gui.addToggle("Hands Line to edge", "HANDS_LINE_EDGE", 0);  
    gui.addToggle("All points: vertical lines", "DRAW_VERTICAL_LINES", 0);
    gui.addToggle("All points: horizontal lines", "DRAW_HORIZONTAL_LINES", 0); 
    gui.addToggle("All points: circles", "DRAW_CIRCLES", 0); 
    gui.addToggle("All points: ribbon ", "DRAW_RIBBON", 0);  
  
    
    //--------- PANEL 2, App Variables
	gui.setWhichPanel("App");
	gui.setWhichColumn(0);
//	gui.addToggle("Live?", "SHOULD_BE_LIVE", 1);
//    gui.addToggle("Record?", "SHOULD_BE_RECORDING", 0);    
	
	//some dummy vars we will update to show the variable lister object
	elapsedTime		= ofGetElapsedTimef();
	appFrameCount	= ofGetFrameNum();	
	appFrameRate	= ofGetFrameRate();
    
	vector <guiVariablePointer> vars;
	vars.push_back( guiVariablePointer("elapsed time", &elapsedTime, GUI_VAR_FLOAT, 2) );
	vars.push_back( guiVariablePointer("elapsed frames", &appFrameCount, GUI_VAR_INT) );
	vars.push_back( guiVariablePointer("app fps", &appFrameRate, GUI_VAR_FLOAT, 2) );
    
	vars.push_back( guiVariablePointer("mouse x", &mouseX, GUI_VAR_INT) );
	vars.push_back( guiVariablePointer("mouse y", &mouseY, GUI_VAR_INT) );
    
	gui.addVariableLister("app vars", vars);
	
	gui.addChartPlotter("App FPS", guiStatVarPointer("app fps", &appFrameRate, GUI_VAR_FLOAT, true, 2), 200, 100, 200, 10, 50);
	
	//SETTINGS AND EVENTS
    
	//load from xml!
	gui.loadSettings("controlPanelSettings.xml");
    
	//if you want to use events call this after you have added all your gui elements
	gui.setupEvents();
	gui.enableEvents();
    
    bShowMouse = true;
    
    //gui.toggleView(); //show it by default
}
Esempio n. 3
0
//#define TEST_COUNTER
//--------------------------------------------------------------
void testApp::setup(){
#ifdef TEST_COUNTER
    ofSetLogLevel(OF_LOG_SILENT);
    cout << "Start test Count 10000" << endl;
    cout << "--------------------------------------------------------------" << endl;

    for(int i = 0 ; i < 10000 ; i++)
    {
        stateMachine.getSharedData().load();
        cout << "Count = "<< stateMachine.getSharedData().counter <<endl;
        stateMachine.getSharedData().counter+=1;
        stateMachine.getSharedData().save();
	}
    cout << "End test Count 10000" << endl;
    cout << "--------------------------------------------------------------" << endl;

    std::exit(0);
#endif
    ofEnableSmoothing();
	ofEnableAlphaBlending();
    ofSetVerticalSync(true);
    glDisable(GL_DEPTH_TEST);
    ofxXmlSettings xml  = stateMachine.getSharedData().xml;
    if(xml.loadFile(settingFileName))
	{
		if(xml.pushTag("DATA"))
		{
            stateMachine.getSharedData().bDebug = xml.getValue("DEBUG", true);   
            float width = xml.getValue("WIDTH", 1280);    
            float height = xml.getValue("HEIGHT", 720);
            sndPlayer.loadSound(xml.getValue("SOUND_PATH", "sounds/Zone 5 - Door Creak, scream and witchly laugh.wav"));
            sndPlayer.setLoop(true);
            sndPlayer.play();
            stateMachine.getSharedData(). wRatio = width/1920;
            stateMachine.getSharedData(). hRatio = height/1080;
            ofSetFullscreen(xml.getValue("FULLSCREEN", 0));
            ofSetWindowShape(width, height);
			stateMachine.getSharedData().path_to_save = xml.getValue("CAPTURE_PATH", "./captures");
            stateMachine.getSharedData().filesXml.loadFile(stateMachine.getSharedData().path_to_save+"/files.xml");
            if(!stateMachine.getSharedData().filesXml.pushTag("XML"))
            {
                stateMachine.getSharedData().filesXml.addTag("XML");
                stateMachine.getSharedData().filesXml.pushTag("XML");
            }
			stateMachine.getSharedData().numDigi = xml.getValue("DIGI", 5);
            stateMachine.getSharedData().font.loadFont(xml.getValue("FONT_PATH", "fonts/LunacyMore.ttf"),xml.getValue("FONT_SIZE", 128));
			ofDirectory dir;
			if(dir.listDir(stateMachine.getSharedData().path_to_save)<1)
			{
				dir.createDirectory(stateMachine.getSharedData().path_to_save);
			}
			
			xml.popTag();
		}
	}
	else
	{
		ofLog(OF_LOG_ERROR,"Faile to load "+ settingFileName);
	}
    
	//    // setup shared data
    ofxControlPanel::setBackgroundColor(simpleColor(30, 30, 60, 100));
	ofxControlPanel::setTextColor(simpleColor(240, 50, 50, 255));
    stateMachine.getSharedData().panel.setup(ofGetWidth(),ofGetHeight());
	stateMachine.getSharedData().panel.loadFont("MONACO.TTF", 8);		
	stateMachine.getSharedData().panel.addPanel("General", 4,false);
    
	ofxControlPanel::setBackgroundColor(simpleColor(60, 30, 30, 100));	
	stateMachine.getSharedData().panel.addPanel("FaceTracking", 5, false);
    ofxControlPanel::setBackgroundColor(simpleColor(60, 30, 30, 100));	
	stateMachine.getSharedData().panel.addPanel("FaceTracking0", 4, false);
    ofxControlPanel::setBackgroundColor(simpleColor(60, 30, 30, 100));	
	stateMachine.getSharedData().panel.addPanel("FaceTracking1", 4, false);
    
	ofxControlPanel::setBackgroundColor(simpleColor(70, 70, 30, 100));	
	stateMachine.getSharedData().panel.addPanel("FaceMapEdit", 4, false);
    
	ofxControlPanel::setBackgroundColor(simpleColor(30, 30, 30, 100));	
    //some dummy vars we will update to show the variable lister object
	appFrameRate	= ofGetFrameRate();
    stateMachine.getSharedData().panel.setWhichPanel("General");
    stateMachine.getSharedData().panel.setWhichColumn(0);
	stateMachine.getSharedData().panel.addChartPlotter("some chart", guiStatVarPointer("app fps", &appFrameRate, GUI_VAR_FLOAT, true, 2), 200, 50, 200, 5, 80);
    vector<string> loglevel;
    loglevel.push_back("OF_LOG_VERBOSE");
    loglevel.push_back("OF_LOG_NOTICE");
    loglevel.push_back("OF_LOG_WARNING");
    loglevel.push_back("OF_LOG_ERROR");
    loglevel.push_back("OF_LOG_FATAL_ERROR");
    loglevel.push_back("OF_LOG_SILENT");
    stateMachine.getSharedData().panel.addTextDropDown("LogLevel","LogLevel", 0, loglevel);
	
	// initialise state machine
	stateMachine.addState(new IndexState());
	stateMachine.addState(new SelectPlayerState());
	stateMachine.addState(new CaptureState());
	stateMachine.addState(new EditState());
	stateMachine.addState(new EndState());
	stateMachine.addState(new LicenseState());
	stateMachine.changeState(xml.getValue("DATA:INIT_STATE", "IndexState"));
    stateMachine.getSharedData().panel.loadSettings("settings.xml");
    stateMachine.getSharedData().panel.hide();
//    if(!stateMachine.getSharedData().bDebug)
//    {
////        stateMachine.getSharedData().panel.unregisterKeyboardEvent();
//    }
    stateMachine.getSharedData().numPlayer = 1;
    for(int i = 0 ; i < NUM_SEQ ;i++)
    {
        image[i].loadSequence("images/bat/bat_", "png", 0, 154, 5);
        image[i].setFrameRate(60);
    }
    
    int num = 3000;
    
	stateMachine.getSharedData().p.assign(num, Particle());
    resetParticles();
    
    
}
Esempio n. 4
0
//--------------------------------------------------------------
void testApp::setup(){
	ofSetVerticalSync(true);
	ofBackground(0, 0, 0);
	
		//audio
	
		// 0 output channels, 
		// 2 input channels
		// 22050 samples per second
		// 256 samples per buffer
		// 4 num buffers (latency)
	
	ofSoundStreamSetup(0,2,this, 44100, 256, 4);	
	left = new float[256];
	right = new float[256];	
	
	audioLevel = 0.f;
	
		//box2d
	
	box2d.init();
	box2d.setGravity(0,0);
	box2d.createBounds();
	box2d.setFPS(30);
	box2d.registerGrabbing();
	
	box2d.createGround();//defaults to the bottom of the screen, nice
	
	ofEnableSmoothing(); 
	ofSetFrameRate(30);

	clearBack = true;
	
	ofSetBackgroundAuto(clearBack);	
	
//	shapeDirLister.setVerbose(false);
//	shapeDirLister.allowExt("xml");
//    int nShapes = shapeDirLister.listDir("shapes");
//	
//	cout << nShapes << " found." << endl;
	
	ofxControlPanel::setBackgroundColor(simpleColor(30, 30, 60, 200));
	ofxControlPanel::setTextColor(simpleColor(240, 50, 50, 255));
	
	gui.loadFont("MONACO.TTF", 8);		
	gui.setup("Hellicar&Lewis Norwegian Wood Audio Reactive Projection", 0, 0, ofGetWidth(), 700);
	gui.addPanel("Basic Settings", 4, false);
	
	ofxControlPanel::setBackgroundColor(simpleColor(30, 30, 30, 200));	
	
		//--------- PANEL 1
	gui.setWhichPanel(0);
	
	gui.setWhichColumn(0);
	
		//some dummy vars we will update to show the variable lister object
	elapsedTime		= ofGetElapsedTimef();
	appFrameCount	= ofGetFrameNum();	
	appFrameRate	= ofGetFrameRate();
	
	vector <guiVariablePointer> vars;
	vars.push_back( guiVariablePointer("ellapsed time", &elapsedTime, GUI_VAR_FLOAT, 2) );
	vars.push_back( guiVariablePointer("ellapsed frames", &appFrameCount, GUI_VAR_INT) );
	vars.push_back( guiVariablePointer("app fps", &appFrameRate, GUI_VAR_FLOAT, 2) );
	
	vars.push_back( guiVariablePointer("mouse x", &mouseX, GUI_VAR_INT) );
	vars.push_back( guiVariablePointer("mouse y", &mouseY, GUI_VAR_INT) );
	
	gui.addVariableLister("app vars", vars);
	
	gui.addChartPlotter("Audio level", guiStatVarPointer("Audio Level", &audioLevel, GUI_VAR_FLOAT, true, 2), 200, 100, 200, 0.f, 1.f);
	gui.addSlider("Audio Cut Down", "AUDIO_CUT_DOWN", 0.1f, 0.f,1.f, false);
	gui.addSlider("Audio Cut Up", "AUDIO_CUT_UP", 0.9f, 0.f,1.f, false);
	gui.addSlider("Audio Boost ", "AUDIO_BOOST", 0.0f, 0.f,1.f, false);	
	
	timeOfLastFrame = ofGetElapsedTimef();	
	
	bShowMouse = false;
	
	ofHideCursor();
	
	loadPolyShapeFromXML("shapes/blossom.xml");
	loadPolyShapeFromXML("shapes/leaf.xml");
	
		//now the scenes
	spring.setup("Spring", &gui, &box2d, polyShapes[0]);
	summer.setup("Summer", &gui, &box2d);
	autumn.setup("Autumn", &gui, &box2d, polyShapes[1]);
	winter.setup("Winter", &gui, &box2d);		
	
	currentScene = &spring;
	spring.init();
	
		//SETTINGS AND EVENTS
	
		//load from xml!
	gui.loadSettings("controlPanelSettings.xml");
	
		//if you want to use events call this after you have added all your gui elements
	gui.setupEvents();
	gui.enableEvents();
	gui.hide();
}
//--------------------------------------------------------------------------
void testApp::setupControlPanel(){

	ofxControlPanel::setBackgroundColor(simpleColor(30, 30, 30, 200));
	ofxControlPanel::setTextColor(simpleColor(80, 240, 240, 255));
		
	panel.setup("controls", 0, 0, 300, 750);
	panel.addPanel("general controls", 4, false);
	panel.addPanel("animation controls", 4, false);
	panel.addPanel("render controls", 4, false);
	panel.addPanel("camera params", 4, false);
	
	panel.addPanel("debug params", 4, false);
			
	//--------- general params
	panel.setWhichPanel("general controls");
	panel.setWhichColumn(0);
	
	panel.addToggle("export screenshots", "exportScreenshots", false);
	panel.addToggle("convert to png after load", "bConvertToPng", false);	
	panel.addToggle("auto change face", "bAutoChange", false);
	panel.addSlider("change face time", "changeTime", 28.2, 8.0, 60.0, false);

	
	panel.addChartPlotter("fps", guiStatVarPointer("app fps", &appFps, GUI_VAR_FLOAT, true, 2), 200, 80, 200, 8, 100);
	
	panel.addToggle("restart at 3.00am", "bRestart", false);
	panel.addSlider("restart hour", "restartHour", 3, 1, 23, true);
	panel.addSlider("restart minute", "restartMinute", 0, 0, 59, true);
		
	panel.addToggle("player mode", "toggle_mode", false);

	//--------- animation params
	panel.setWhichPanel("animation controls");
	panel.setWhichColumn(0);

	panel.addSlider("particle targetForce", "particle_targetForce", 1.0, 0.0, 1.0, false);
	panel.addSlider("noise scale in", "noise_scale_input", 0.57, 0.0, 1.0, false);
	panel.addSlider("noise scale out", "noise_scale_output", 0.5, 0.0, 1.0, false);
	
	panel.addChartPlotter("fps", guiStatVarPointer("app fps", &appFps, GUI_VAR_FLOAT, true, 2), 200, 80, 200, 8, 100);
	
	panel.addSlider("random offset", "randomOffset", 0, 0, 10, false);
	panel.addSlider("slow momentum", "slowMomentum", .3, 0, 1, false);
	panel.addSlider("particle speed", "particle_speed", 24.7, 0, 50, false);
	panel.addSlider("particle spread", "particle_spread", 100, 2, 100, false);
	panel.addSlider("particle viscosity", "particle_viscosity", 0.167, 0.0, 0.5, false);
	panel.addSlider("particle independence", "particle_independence", 0.178, 0.0, 0.8, false);
	panel.addSlider("particle neighborhood", "particle_neighborhood", 1292, 100, 2000, false);


	//--------- render params
	panel.setWhichPanel("render controls");
	panel.setWhichColumn(0);
	
	panel.addToggle("do ghetto fbo trails", "do_trails", false);	
	panel.addSlider("fboTrails scale", "fboScale", 0.04, 0.001, 0.5, false);
	
	
	panel.addChartPlotter("fps", guiStatVarPointer("app fps", &appFps, GUI_VAR_FLOAT, true, 2), 200, 80, 200, 8, 100);
	
	panel.addSlider("max brightness", "maxBrightness", 0, 0, 255, true);
	panel.addSlider("rgb brightness", "rgbBrightness", 3, 0, 10, false);
	panel.addSlider("point brightness", "point_brightness", 10, 0, 20.0, false);
	panel.addSlider("dof focus offset", "focus_offset", 0, -1000, 1000, false);
	panel.addSlider("aberration", "aberration", 0.021, 0.005, 0.2, false);
	panel.addSlider("aperture", "aperture", 0.025, 0.001, 0.2, false);
	panel.addSlider("max point size", "maxPointSize", 21.3, 5, 40, false);
	panel.addSlider("sphere alpha", "sphere_alpha", 0.66, 0.0, 1.0, false);
	panel.addSlider("sphere red", "sphere_red", 0, 0.0, 1.0, false);
	panel.addSlider("sphere green", "sphere_green", 0.35, 0.0, 1.0, false);
	panel.addSlider("sphere blue", "sphere_blue", 0.47, 0.0, 1.0, false);
	
	// - - -- - --- - camera param eters
	panel.setWhichPanel("camera params");
	panel.setWhichColumn(0);
	
	panel.addToggle("persistent mode", "persistentMode", true);
	panel.addSlider("rotation momentum", "rotationMomentum", .9, .5, 1, false);
	panel.addSlider("position momentum", "positionMomentum", .99, .5, 1, false);
	panel.addSlider("zoom momentum", "zoomMomentum", .99, .5, 1, false);
	panel.addSlider("fov", "fov", 60, 1, 180, false);
	panel.addSlider("min zoom", "minZoom", 400, 0, 400, false);
	panel.addSlider("max zoom", "maxZoom", 10000, 400, 20000, false);
	panel.addSlider("reset delay", "resetDelay", 4, 0, 10, false);
	panel.addSlider("reset length", "resetLength", 2, 0, 10, false);
	panel.addSlider("rotation speed", "rotationSpeed", .0005, 0, .001, false);
	panel.addSlider("zoom speed", "zoomSpeed", 1, 0, 4, false);
	panel.addSlider("zoom scale factor", "zoomScaleFactor", .005, 0, .01, false);
	panel.addToggle("smart focal plane", "smartFocalPlane", true);
	
	//--------- general params
	panel.setWhichPanel("debug params");
	panel.setWhichColumn(0);
	
	
	panel.addToggle("draw particles", "bDrawParticles", true);	
	panel.addToggle("freeze particles", "bFreezeParticles", false);	
	panel.addToggle("draw white", "drawWhite", false);	
	
	panel.selectedPanel = 0;	
	
	
	panel.loadSettings("appSettings.xml");

	panel.setValueB("toggle_mode", false);
	panel.setValueB("bAutoChange", ofDirectory(scanFolder).exists());

	//Particle::globalOffset.set(0, 1. / 3, 2. / 3);

}
Esempio n. 6
0
//--------------------------------------------------------------
void testApp::setup(){
	ofEnableAlphaBlending();
    ofxXmlSettings xml  = stateMachine.getSharedData().xml;
    if(xml.loadFile(settingFileName))
	{
		if(xml.pushTag("DATA"))
		{
			stateMachine.getSharedData().counter = xml.getValue("COUNTER", 0);
			stateMachine.getSharedData().path_to_save = xml.getValue("CAPTURE_PATH", "./captures");
			stateMachine.getSharedData().numDigi = xml.getValue("DIGI", 5);
			ofDirectory dir;
			if(dir.listDir(stateMachine.getSharedData().path_to_save)<1)
			{
				dir.createDirectory(stateMachine.getSharedData().path_to_save);
			}
			
			xml.popTag();
		}
	}
	else
	{
		ofLog(OF_LOG_ERROR,"Faile to load "+ settingFileName);
	}
    
	//    // setup shared data
    ofxControlPanel::setBackgroundColor(simpleColor(30, 30, 60, 100));
	ofxControlPanel::setTextColor(simpleColor(240, 50, 50, 255));
    stateMachine.getSharedData().panel.setup(ofGetWidth(),ofGetHeight());
	stateMachine.getSharedData().panel.loadFont("MONACO.TTF", 8);		
	stateMachine.getSharedData().panel.addPanel("General", 4,false);
    
	ofxControlPanel::setBackgroundColor(simpleColor(60, 30, 30, 100));	
	stateMachine.getSharedData().panel.addPanel("FaceTracking", 5, false);
    ofxControlPanel::setBackgroundColor(simpleColor(60, 30, 30, 100));	
	stateMachine.getSharedData().panel.addPanel("FaceTracking0", 4, false);
    ofxControlPanel::setBackgroundColor(simpleColor(60, 30, 30, 100));	
	stateMachine.getSharedData().panel.addPanel("FaceTracking1", 4, false);
    
	ofxControlPanel::setBackgroundColor(simpleColor(70, 70, 30, 100));	
	stateMachine.getSharedData().panel.addPanel("FaceMapEdit", 4, false);
    
	ofxControlPanel::setBackgroundColor(simpleColor(30, 30, 30, 100));	
    //some dummy vars we will update to show the variable lister object
	appFrameRate	= ofGetFrameRate();
    stateMachine.getSharedData().panel.setWhichPanel("General");
    stateMachine.getSharedData().panel.setWhichColumn(0);
	stateMachine.getSharedData().panel.addChartPlotter("some chart", guiStatVarPointer("app fps", &appFrameRate, GUI_VAR_FLOAT, true, 2), 200, 50, 200, 5, 80);
    vector<string> loglevel;
    loglevel.push_back("OF_LOG_VERBOSE");
    loglevel.push_back("OF_LOG_NOTICE");
    loglevel.push_back("OF_LOG_WARNING");
    loglevel.push_back("OF_LOG_ERROR");
    loglevel.push_back("OF_LOG_FATAL_ERROR");
    loglevel.push_back("OF_LOG_SILENT");
    stateMachine.getSharedData().panel.addTextDropDown("LogLevel","LogLevel", 0, loglevel);
	
	// initialise state machine
	stateMachine.addState(new IndexState());
	stateMachine.addState(new SelectPlayerState());
	stateMachine.addState(new PlayState());
	stateMachine.addState(new EditState());
	stateMachine.changeState("PlayState");
    stateMachine.getSharedData().panel.loadSettings("settings.xml");
    stateMachine.getSharedData().panel.hide();
    stateMachine.getSharedData().numPlayer = 2;
    
}
//--------------------------------------------------------
void captureApp::setup(){
	ofSetLogLevel(OF_LOG_NOTICE);
	serial.enumerateDevices();
	
	ofxXmlSettings serialSetup;
	serialSetup.loadFile("serialSettings.xml");
	string serialPort = serialSetup.getValue("serialPort", "");
	serial.setup(serialPort, 9600);		// < this should be set
	// to whatever com port
	// your serial device is 
	// connected to.  
	// (ie, COM4 on a pc, dev/tty.... on a mac)
	// arduino users check in arduino app....
	serial.flush();
	
	state			= CAP_STATE_WAITING;
	debugState		= CAP_NORMAL;
	camState		= CAMERA_CLOSED;
	prevCamState	= CAMERA_CLOSED;
	
	preCamMode				= 0;
	cameraFrameNum			= 0;
	sdk						= NULL;
	settings				= NULL;
	timeToEndCapture		= 0.0;
	bNeedsToLeaveFrame		= false;
	bOscSetup				= false;
	fadeInStartTime			= 0.0;
	spotLightAlpha			= 1.0;
	bDoThreadedRSync		= false;
	bDoThreadedFrameSave	= false;
	
	camera3D.disableMouseEvents();
				
	if( !ofxFileHelper::doesFileExist(CAPTURE_MAIN_FOLDER) ){
		printf("making folder %s\n", CAPTURE_MAIN_FOLDER.c_str());
		ofxFileHelper::makeDirectory(CAPTURE_MAIN_FOLDER);
	}
	
	if( !ofxFileHelper::doesFileExist(EXPORT_FOLDER) ){
		printf("making folder %s\n", EXPORT_FOLDER.c_str());	
		ofxFileHelper::makeDirectory(EXPORT_FOLDER);
		if( !ofxFileHelper::doesFileExist(DECODE_FOLDER) ){
			ofxFileHelper::makeDirectory(DECODE_FOLDER);
		}		
	}
	
	ofxXmlSettings xml;
	xml.loadFile("locationSettings.xml");
	currentCity			= xml.getValue("city_name", "NYC");
	transformSpaces(currentCity); //remove space and add underscores
	currentDecodePath		= DECODE_FOLDER;
	currentCaptureFolder    = string(CAPTURE_MAIN_FOLDER) + FRAME_CAPTURE_FOLDER;
	currentTimestamp		= (ofxTimeStamp()).getUnixTimeAsString();
	
	// setup panel
	panel.setup("control", 0, 0, 300, 768);

	panel.setBackgroundColor(simpleColor(10, 10, 10, 0));
		
	//panel.loadFont("resources/myFont.ttf", 9);
	panel.addPanel("app/capture settings", 1);
	panel.addPanel("app settings", 1);
	panel.addPanel("face trigger settings", 1);
	panel.addPanel("pattern settings", 1);
	panel.addPanel("misc settings", 1);
	
	panel.setWhichPanel("app/capture settings");

	panel.addToggle("use face trigger", "B_FACE_TRIGGER", false);
	
	vector <string> camModes;
	camModes.push_back("camera off");
	camModes.push_back("camera qt");
	camModes.push_back("camera dc1394");
	
	panel.addMultiToggle("camera mode", "camMode", 0, camModes);
	
	panel.addToggle("camera settings", "cameraSettings", false);
	
	panel.addToggle("overide light", "bOverideLight", true);
	panel.addToggle("show red clipping", "SHOW_RED", true);

	panel.addToggle("fullscreen", "fullscreen", false);
	
	panel.addToggle("spot light image", "bSpotLight", true);
	panel.addSlider("spotlight %", "spotLightBrightness", 1.0, 0.0, 1.0, false);
	
	panel.addToggle("frame by frame", "frameByFrame", false);
	panel.addToggle("large video", "largeVideo", false);

	panel.addSlider("min brightness", "minBrightness", 0, 0, 255, true);
	panel.addSlider("max brightness", "maxBrightness", 255, 0, 255, true);	
	panel.addSlider("3 phase - wavelength", "wavelength", 64, 8, 512, true);
	panel.addToggle("use projector lut", "projectorLut", false);
		
	panel.setWhichPanel("app settings");
	
	panel.addSlider("fade in time", "fadeInTime", 2.0, 0.0, 5.0, false);
	
	vector<string> postCapModes;
	postCapModes.push_back("save frames");
	postCapModes.push_back("decode and frames");
	postCapModes.push_back("decode, export and frames");
	postCapModes.push_back("all above + notify");
	panel.addMultiToggle("post capture:", "postCapture", 2, postCapModes);
	
	panel.addToggle("notify with osc", "use_osc", false);
	
	panel.addSlider("decode skip frames", "decodeSkipFrame", 2, 0, 5, true);
	
	panel.addSlider("capture time f", "CAPTURE_TIME_F", 4.0, 2.0, 15.0, false);
	
	panel.setWhichPanel("pattern settings");
	
	panel.addSlider("pattern rate", "patternRate", 1, 1, 6, true);
	panel.addSlider("camera rate", "cameraRate", 1, 1, 6, true);
	panel.addSlider("camera offset", "cameraOffset", 0, 0, 5, true);
	
	panel.addToggle("reverse", "reverse", false);
	
	vector<string> orientations;
	orientations.push_back("vertical");
	orientations.push_back("horizonal");
	panel.addMultiToggle("orientation", "orientation", 0, orientations);
	
	
	panel.setWhichPanel("face trigger settings");
	panel.addSlider("face trigger fps", "FACE_FPS", 10, 3, 30, false);
	panel.addSlider("face detected time", "FACE_DETECT_TIME", 2.0, 0.1, 10.0, false);
	panel.addSlider("face forget time", "FACE_FORGET_TIME", 2.0, 0.1, 10.0, false);
	
	guiStatVarPointer varPtr;
	varPtr.setup("num faces", &face.numFaces, GUI_VAR_INT, true);
	panel.addChartPlotter("num faces", varPtr, 240, 60, 240, -1, 3);
	panel.addChartPlotter("face confidence", guiStatVarPointer("confidence", &face.confidence, GUI_VAR_FLOAT, true, 2), 240, 70, 240, -0.2, 1.2);
	
	panel.addDrawableRect("state", &face, 240, 40);
	
	panel.addSlider("confidence add amnt", "confidence_add", 0.1, 0.05, 1.0, false);
	panel.addSlider("confidence fade amnt", "confidence_fade", 0.95, 0.8, 0.995, false);
	panel.addSlider("confidence gate start val", "confidence_gate_start", 0.65, 0.15, 1.0, false);
	panel.addSlider("confidence gate stop val", "confidence_gate_stop", 0.4, 0.0, 1.0, false);
	
	panel.setWhichPanel("misc settings");
	
	panel.addToggle("brightness setting", "brightnessSetting", false);
	panel.addSlider("check brigheness", "checkBrightness", 0, 0, 255, true);
	panel.addToggle("delete after transfer", "bDeleteAfterSend", false);
	panel.addToggle("restart at 3.00am", "bRestart", false);
	panel.addSlider("restart hour", "restartHour", 3, 1, 23, true);
	panel.addSlider("restart minute", "restartMinute", 0, 0, 59, true);
	
	panel.loadSettings("controlCapture.xml");
	
	if( panel.getValueB("use_osc") ){
		setupOsc();
	}
	
	//overides 
	//panel.setValueI("camMode", 0);
	panel.setValueI("fullscreen", 1);
	panel.setValueI("cameraSettings", 0);
	panel.setValueI("frameByFrame", 0);
	panel.setValueI("largeVideo", 0);
	panel.setValueI("brightnessSetting",0);
	panel.setValueI("bOverideLight",0);
	panel.setValueI("bSpotLight", 1);
	
	cameraWidth  = 640;
	cameraHeight = 480;
	
	int n = 3; // no patterns have more than 3 frames
	for(int i = 0; i < n; i++) {
		recent.push_back(ofImage());
		recent.back().allocate(
							   cameraWidth,
							   cameraHeight,
							   OF_IMAGE_COLOR);
		needsUpdate.push_back(false);
	}
	curGenerator = &threePhase;
	
	int captureTime = 15;
	imageSaver.setup(cameraWidth, cameraHeight, captureTime * 60);
	
	ofSetVerticalSync(true);
	ofSetFrameRate(60);
	
	ofBackground(0, 0, 0);
	
	scanningSound.loadSound("resources/scanningPlaceholder.mp3");
	scanningSound.setLoop(true);
	
	spotLightImage.loadImage("resources/captureMask.jpg");
	generateSpotlight(spotLightImage);
	spotLightImage.setAnchorPercent(0.5, 0.5);
	
	face.setup("faceHaar/haarcascade_frontalface_alt.xml", 320, 240, 2.0, 2.0);
	prevFaceCheckTimeF = ofGetElapsedTimef();
	
	threePhase.setSize(1024, 768);
	updateGenerator();
	
	light.setup(0);
}