/// Callbacks void CCLayer::onEnter() { CCDirector* pDirector = CCDirector::sharedDirector(); // register 'parent' nodes first // since events are propagated in reverse order if (m_bTouchEnabled) { this->registerWithTouchDispatcher(); } // then iterate over all the children CCNode::onEnter(); // add this layer to concern the Accelerometer Sensor if (m_bAccelerometerEnabled) { pDirector->getAccelerometer()->setDelegate(this); } // add this layer to concern the keypad msg if (m_bKeypadEnabled) { pDirector->getKeypadDispatcher()->addDelegate(this); } }
void CCApplication::ccAccelerationUpdate() { // Accelerometer doesn't work on Marmalade X86 MacOS-X simulator #if !(defined(__APPLE__) && defined(I3D_ARCH_X86)) CCDirector* pDirector = CCDirector::sharedDirector(); pDirector->getAccelerometer()->update((float)s3eAccelerometerGetX(), (float)s3eAccelerometerGetY(), (float)s3eAccelerometerGetZ(), s3eTimerGetMs()); // MH: Added casting to float #endif }
void CCInputDelegate::setAccelerometerEnabled(bool enabled) { if (enabled != m_bAccelerometerEnabled) { m_bAccelerometerEnabled = enabled; CCDirector* pDirector = CCDirector::sharedDirector(); if (enabled) { pDirector->getAccelerometer()->setDelegate(this); } else { pDirector->getAccelerometer()->setDelegate(NULL); } } }
void CCLayer::onEnterTransitionDidFinish() { if (m_bAccelerometerEnabled) { CCDirector* pDirector = CCDirector::sharedDirector(); pDirector->getAccelerometer()->setDelegate(this); } CCNode::onEnterTransitionDidFinish(); }
void CCLayer::setAccelerometerInterval(double interval) { if (m_bAccelerometerEnabled) { if (m_bRunning) { CCDirector* pDirector = CCDirector::sharedDirector(); pDirector->getAccelerometer()->setAccelerometerInterval(interval); } } }
/// isAccelerometerEnabled setter void CCLayer::setAccelerometerEnabled(bool enabled) { if (enabled != m_bIsAccelerometerEnabled) { m_bIsAccelerometerEnabled = enabled; if (m_bIsRunning) { CCDirector *pDirector = CCDirector::sharedDirector(); if (enabled) { pDirector->getAccelerometer()->setDelegate(this); } else { pDirector->getAccelerometer()->setDelegate(NULL); } } } }
void Java_org_cocos2dx_lib_Cocos2dxAccelerometer_onSensorChanged(JNIEnv* env, jobject thiz, jfloat x, jfloat y, jfloat z, jlong timeStamp) { // We need to invert to make it compatible with iOS. CCRect rcRect = CCEGLView::sharedOpenGLView().getViewPort(); float fScreenScaleFactor = CCEGLView::sharedOpenGLView().getScreenScaleFactor(); // cocos2d::CCAccelerometer::sharedAccelerometer()->update((x - rcRect.origin.x) / fScreenScaleFactor, // (y - rcRect.origin.y) / fScreenScaleFactor, // z, // timeStamp); CCDirector* pDirector = CCDirector::sharedDirector(); pDirector->getAccelerometer()->update(x, y, z, timeStamp); }
void CCLayer::onExit() { CCDirector* pDirector = CCDirector::sharedDirector(); if( m_bIsTouchEnabled ) { pDirector->getTouchDispatcher()->removeDelegate(this); unregisterScriptTouchHandler(); } // remove this layer from the delegates who concern Accelerometer Sensor if (m_bIsAccelerometerEnabled) { pDirector->getAccelerometer()->setDelegate(NULL); } // remove this layer from the delegates who concern the kaypad msg if (m_bIsKeypadEnabled) { pDirector->getKeypadDispatcher()->removeDelegate(this); } CCNode::onExit(); }
void CCLayer::onExit() { CCDirector* pDirector = CCDirector::sharedDirector(); if( m_bTouchEnabled ) { pDirector->getTouchDispatcher()->removeDelegate(this); // [lua]:don't unregister script touch handler, or the handler will be destroyed // unregisterScriptTouchHandler(); } // remove this layer from the delegates who concern Accelerometer Sensor if (m_bAccelerometerEnabled) { pDirector->getAccelerometer()->setDelegate(NULL); } // remove this layer from the delegates who concern the keypad msg if (m_bKeypadEnabled) { pDirector->getKeypadDispatcher()->removeDelegate(this); } CCNode::onExit(); }
JNIEXPORT void JNICALL Java_org_cocos2dx_lib_Cocos2dxAccelerometer_onSensorChanged(JNIEnv* env, jobject thiz, jfloat x, jfloat y, jfloat z, jlong timeStamp) { CCDirector* pDirector = CCDirector::sharedDirector(); pDirector->getAccelerometer()->update(x, y, z, timeStamp); }