#include "testApp.h" //-------------------------------------------------------------- void testApp::setup() { ofSetLogLevel(OF_LOG_NOTICE); numDevices = openNIRecorders[0].getNumDevices(); for (int deviceID = 0; deviceID < numDevices; deviceID++){ //openNIRecorders[deviceID].setLogLevel(OF_LOG_VERBOSE); openNIRecorders[deviceID].setup(false); openNIRecorders[deviceID].addDepthGenerator(); openNIRecorders[deviceID].addImageGenerator(); openNIRecorders[deviceID].setRegister(true); // this registers all the image pixels to the depth pixels openNIRecorders[deviceID].setMirror(true); // flips the image and depth sensors openNIRecorders[deviceID].start(); openNIPlayers[deviceID].setup(false); openNIPlayers[deviceID].start(); filenames[deviceID]=""; } isLive=true; isRecording=false; verdana.loadFont(ofToDataPath("verdana.ttf"), 10); startSound.loadSound("tone1.wav"); stopSound.loadSound("tone0.wav");; } string testApp::generateFileName(int cam) { string _root = "kinectRecord_"; ///not a good approach, need digit padding string _timestamp = ofToString(ofGetDay()) + ofToString(ofGetMonth()) + ofToString(ofGetYear()) + ofToString(ofGetHours()) + ofToString(ofGetMinutes()) + ofToString(ofGetSeconds()); string _filename = (_root + ofToString(cam)+"_"+_timestamp + ".oni"); return _filename; } //-------------------------------------------------------------- void testApp::update(){ for (int deviceID = 0; deviceID < numDevices; deviceID++){ if (isLive) { openNIRecorders[deviceID].update(); if (isRecording){ recorded++; } } else { openNIPlayers[deviceID].update(); } } } //-------------------------------------------------------------- void testApp::draw(){ ofBackground(0, 0, 0); ofSetColor(255, 255, 255); ofPushMatrix(); for (int deviceID = 0; deviceID < numDevices; deviceID++){ ofTranslate(0, deviceID * 450); if (isLive) { //openNIRecorders[deviceID].drawDebug(); // draws all generators openNIRecorders[deviceID].drawDepth(200, 0,600,450); openNIRecorders[deviceID].drawImage(800, 0,600,450); } else { //openNIPlayers[deviceID].drawDebug(); openNIPlayers[deviceID].drawDepth(200, 0,600,450); openNIPlayers[deviceID].drawImage(800, 0,600,450); } } ofPopMatrix(); ofSetColor(255, 255, 255); string msg = "MILLIS: " + ofToString(ofGetElapsedTimeMillis()) + "\nFPS: " + ofToString(ofGetFrameRate()); if (isRecording) { msg +="\nrecorded "+ofToString(recorded); } if (!isLive) { msg +="\n"+filenames[0]; } verdana.drawString(msg, 10, 10); } //-------------------------------------------------------------- void testApp::exit(){ for (int deviceID = 0; deviceID < numDevices; deviceID++){ openNIRecorders[deviceID].stop(); openNIPlayers[deviceID].stop(); } } //-------------------------------------------------------------- void testApp::keyPressed(int key){ switch (key) { case 's': case 'S': if (isRecording) { for (int deviceID = 0; deviceID < numDevices; deviceID++){ openNIRecorders[deviceID].stopRecording(); stopSound.play(); } isRecording = false; break; } else { for (int deviceID = 0; deviceID < numDevices; deviceID++){ filenames[deviceID]=generateFileName(deviceID); openNIRecorders[deviceID].startRecording(generateFileName(deviceID)); startSound.play(); } isRecording = true; recorded=0; break; } break; case 'p': case 'P': if (filenames[0] != "" && !isRecording && isLive) { for (int deviceID = 0; deviceID < numDevices; deviceID++){ openNIRecorders[deviceID].stopRecording(); } for (int deviceID = 0; deviceID < numDevices; deviceID++){ openNIPlayers[deviceID].startPlayer(filenames[deviceID]); } isLive = false; //whichUser=&playUser; //whichImage=&playImage; } else { isLive = true; //whichUser=&recordUser; //whichImage=&recordImage; } break; } /* why do this? switch (key) { case 't': for (int deviceID = 0; deviceID < numDevices; deviceID++){ openNIRecorders[deviceID].toggleRegister(); } break; case 'x': for (int deviceID = 0; deviceID < numDevices; deviceID++){ openNIRecorders[deviceID].stop(); } break; default: break; } */ } //-------------------------------------------------------------- void testApp::keyReleased(int key){ } //-------------------------------------------------------------- void testApp::mouseMoved(int x, int y ){ } //-------------------------------------------------------------- void testApp::mouseDragged(int x, int y, int button){ } //-------------------------------------------------------------- void testApp::mousePressed(int x, int y, int button){ } //-------------------------------------------------------------- void testApp::mouseReleased(int x, int y, int button){ } //-------------------------------------------------------------- void testApp::windowResized(int w, int h){ }