//-------------------------------------- void ofSetupOpenGL(ofPtr<ofAppBaseWindow> windowPtr, int w, int h, int screenMode){ if(!ofGetCurrentRenderer()) { #ifdef USE_PROGRAMMABLE_GL ofPtr<ofBaseRenderer> renderer(new ofGLProgrammableRenderer(false)); #else ofPtr<ofBaseRenderer> renderer(new ofGLRenderer(false)); #endif ofSetCurrentRenderer(renderer,false); } window = windowPtr; if(ofIsGLProgrammableRenderer()){ #if defined(TARGET_RASPBERRY_PI) static_cast<ofAppEGLWindow*>(window.get())->setGLESVersion(2); #elif defined(TARGET_LINUX_ARM) static_cast<ofAppGLFWWindow*>(window.get())->setOpenGLVersion(2,0); #elif !defined(TARGET_OPENGLES) static_cast<ofAppGLFWWindow*>(window.get())->setOpenGLVersion(3,2); #endif }else{ #if defined(TARGET_LINUX_ARM) && !defined(TARGET_RASPBERRY_PI) static_cast<ofAppGLFWWindow*>(window.get())->setOpenGLVersion(1,0); #endif } window->setupOpenGL(w, h, screenMode); }
void ofxAlembic::IGeom::visit_geoms(ofPtr<IGeom> &obj, map<string, IGeom*> &object_name_map, map<string, IGeom*> &object_fullname_map) { for (int i = 0; i < obj->m_children.size(); i++) visit_geoms(obj->m_children[i], object_name_map, object_fullname_map); if (obj->isTypeOf(UNKHOWN)) return; // assert(object_name_map.find(obj->getName()) == object_name_map.end()); object_name_map[obj->getName()] = obj.get(); // assert(object_fullname_map.find(obj->getFullName()) == object_fullname_map.end()); object_fullname_map[obj->getFullName()] = obj.get(); }
//-------------------------------------- void ofRunApp(ofPtr<ofBaseApp> OFSA){ OFSAptr = OFSA; if(OFSAptr){ OFSAptr->mouseX = 0; OFSAptr->mouseY = 0; } #ifndef TARGET_ANDROID atexit(ofExitCallback); #endif #ifdef WIN32_HIGH_RES_TIMING timeBeginPeriod(1); // ! experimental, sets high res time // you need to call timeEndPeriod. // if you quit the app other than "esc" // (ie, close the console, kill the process, etc) // at exit wont get called, and the time will // remain high res, that could mess things // up on your system. // info here:http://www.geisswerks.com/ryan/FAQS/timing.html #endif window->initializeWindow(); ofSeedRandom(); ofResetElapsedTimeCounter(); window->runAppViaInfiniteLoop(OFSAptr.get()); }
void ofxAlembic::IGeom::visit_geoms(ofPtr<IGeom> &obj, map<string, IGeom*> &object_map) { for (int i = 0; i < obj->m_children.size(); i++) visit_geoms(obj->m_children[i], object_map); if (obj->isTypeOf(UNKHOWN)) return; object_map[obj->getName()] = obj.get(); }
// the same hack but in this case the shared_ptr will delete, old versions created the testApp as new... //-------------------------------------- void ofRunApp(ofBaseApp * OFSA){ OFSAptr = ofPtr<ofBaseApp>(OFSA); if(OFSAptr){ OFSAptr->mouseX = 0; OFSAptr->mouseY = 0; } #ifndef TARGET_ANDROID atexit(ofExitCallback); #endif #if defined(TARGET_LINUX) || defined(TARGET_OSX) // see http://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html#Termination-Signals signal(SIGTERM, &sighandler); signal(SIGQUIT, &sighandler); signal(SIGINT, &sighandler); signal(SIGKILL, &sighandler); // not much to be done here signal(SIGHUP, &sighandler); // not much to be done here // http://www.gnu.org/software/libc/manual/html_node/Program-Error-Signals.html#Program-Error-Signals signal(SIGABRT, &sighandler); // abort signal #endif #ifdef WIN32_HIGH_RES_TIMING timeBeginPeriod(1); // ! experimental, sets high res time // you need to call timeEndPeriod. // if you quit the app other than "esc" // (ie, close the console, kill the process, etc) // at exit wont get called, and the time will // remain high res, that could mess things // up on your system. // info here:http://www.geisswerks.com/ryan/FAQS/timing.html #endif window->initializeWindow(); ofSeedRandom(); ofResetElapsedTimeCounter(); ofSetWorkingDirectoryToDefault(); ofAddListener(ofEvents().setup,OFSAptr.get(),&ofBaseApp::setup,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().update,OFSAptr.get(),&ofBaseApp::update,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().draw,OFSAptr.get(),&ofBaseApp::draw,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().exit,OFSAptr.get(),&ofBaseApp::exit,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().keyPressed,OFSAptr.get(),&ofBaseApp::keyPressed,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().keyReleased,OFSAptr.get(),&ofBaseApp::keyReleased,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().mouseMoved,OFSAptr.get(),&ofBaseApp::mouseMoved,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().mouseDragged,OFSAptr.get(),&ofBaseApp::mouseDragged,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().mousePressed,OFSAptr.get(),&ofBaseApp::mousePressed,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().mouseReleased,OFSAptr.get(),&ofBaseApp::mouseReleased,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().windowEntered,OFSAptr.get(),&ofBaseApp::windowEntry,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().windowResized,OFSAptr.get(),&ofBaseApp::windowResized,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().messageEvent,OFSAptr.get(),&ofBaseApp::messageReceived,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().fileDragEvent,OFSAptr.get(),&ofBaseApp::dragged,OF_EVENT_ORDER_APP); window->runAppViaInfiniteLoop(OFSAptr.get()); }
//-------------------------------------- ofAppBaseWindow * ofGetWindowPtr(){ return window.get(); }
//-------------------------------------- ofBaseApp * ofGetAppPtr(){ return OFSAptr.get(); }
//-------------------------------------- void ofRunApp(ofPtr<ofBaseApp> OFSA){ OFSAptr = OFSA; if(OFSAptr){ OFSAptr->mouseX = 0; OFSAptr->mouseY = 0; } #ifndef TARGET_ANDROID atexit(ofExitCallback); #endif #ifdef WIN32_HIGH_RES_TIMING timeBeginPeriod(1); // ! experimental, sets high res time // you need to call timeEndPeriod. // if you quit the app other than "esc" // (ie, close the console, kill the process, etc) // at exit wont get called, and the time will // remain high res, that could mess things // up on your system. // info here:http://www.geisswerks.com/ryan/FAQS/timing.html #endif window->initializeWindow(); ofSeedRandom(); ofResetElapsedTimeCounter(); ofAddListener(ofEvents().setup,OFSA.get(),&ofBaseApp::setup,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().update,OFSA.get(),&ofBaseApp::update,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().draw,OFSA.get(),&ofBaseApp::draw,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().exit,OFSA.get(),&ofBaseApp::exit,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().keyPressed,OFSA.get(),&ofBaseApp::keyPressed,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().keyReleased,OFSA.get(),&ofBaseApp::keyReleased,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().mouseMoved,OFSA.get(),&ofBaseApp::mouseMoved,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().mouseDragged,OFSA.get(),&ofBaseApp::mouseDragged,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().mousePressed,OFSA.get(),&ofBaseApp::mousePressed,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().mouseReleased,OFSA.get(),&ofBaseApp::mouseReleased,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().windowEntered,OFSA.get(),&ofBaseApp::windowEntry,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().windowResized,OFSA.get(),&ofBaseApp::windowResized,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().messageEvent,OFSA.get(),&ofBaseApp::messageReceived,OF_EVENT_ORDER_APP); ofAddListener(ofEvents().fileDragEvent,OFSA.get(),&ofBaseApp::dragged,OF_EVENT_ORDER_APP); window->runAppViaInfiniteLoop(OFSAptr.get()); }
void ofExitCallback(){ ofNotifyExit(); ofRemoveAllURLRequests(); ofStopURLLoader(); Poco::Net::uninitializeSSL(); ofRemoveListener(ofEvents().setup,OFSAptr.get(),&ofBaseApp::setup,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().update,OFSAptr.get(),&ofBaseApp::update,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().draw,OFSAptr.get(),&ofBaseApp::draw,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().exit,OFSAptr.get(),&ofBaseApp::exit,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().keyPressed,OFSAptr.get(),&ofBaseApp::keyPressed,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().keyReleased,OFSAptr.get(),&ofBaseApp::keyReleased,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().mouseMoved,OFSAptr.get(),&ofBaseApp::mouseMoved,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().mouseDragged,OFSAptr.get(),&ofBaseApp::mouseDragged,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().mousePressed,OFSAptr.get(),&ofBaseApp::mousePressed,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().mouseReleased,OFSAptr.get(),&ofBaseApp::mouseReleased,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().windowResized,OFSAptr.get(),&ofBaseApp::windowResized,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().windowEntered,OFSAptr.get(),&ofBaseApp::windowEntry,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().messageEvent,OFSAptr.get(),&ofBaseApp::messageReceived,OF_EVENT_ORDER_APP); ofRemoveListener(ofEvents().fileDragEvent,OFSAptr.get(),&ofBaseApp::dragged,OF_EVENT_ORDER_APP); #ifndef TARGET_NO_SOUND //------------------------ // try to close engine if needed: ofSoundShutdown(); //------------------------ #endif // try to close quicktime, for non-linux systems: #if defined(OF_VIDEO_CAPTURE_QUICKTIME) || defined(OF_VIDEO_PLAYER_QUICKTIME) closeQuicktime(); #endif //------------------------ // try to close freeImage: ofCloseFreeImage(); //------------------------ // try to close free type: ofTrueTypeFont::finishLibraries(); #ifdef WIN32_HIGH_RES_TIMING timeEndPeriod(1); #endif }
//CALLING THIS TOO FREQUENTLY WILL SLOW FRAMERATE static bool shouldRemove(ofPtr<ofxBox2dBaseShape>shape) { return !ofRectangle(0, -400, ofGetWidth(), ofGetHeight()+400).inside(shape.get()->getPosition()); }
static bool removeShapeOffScreen(ofPtr<ofxBox2dBaseShape> shape) { if (!ofRectangle(0, -400, ofGetWidth(), ofGetHeight()+400).inside(shape.get()->getPosition())) { return true; } return false; }
void ofRunApp(ofBaseApp * OFSA) { ofInitApp(OFSA); window->runAppViaInfiniteLoop(OFSAptr.get()); }
void ofxFensterManager::runAppViaInfiniteLoop(ofPtr<ofBaseApp> appPtr) { runAppViaInfiniteLoop(appPtr.get()); }
void ofAppAndroidWindow::runAppViaInfiniteLoop(ofPtr<ofBaseApp> appPtr){ androidApp = dynamic_cast<ofxAndroidApp*>( appPtr.get() ); OFApp = appPtr; }
bool testApp::isLevelPlat(ofPtr<Platform> bul){ return !(bul.get()->level != level); }