//-------------------------------------------------------------- void StrategicCamera::update(){ float speed = 0.4f; State* state = State::getInstance(); if(state->m_pressedKeys[m_forwardKey] && !state->m_pressedKeys[m_backKey]){ move(imp::Vector3(0.f, speed, 0.f)); } else if(state->m_pressedKeys[m_backKey] && !state->m_pressedKeys[m_forwardKey]){ move(imp::Vector3(0.f, -speed, 0.f)); } if(state->m_pressedKeys[m_leftKey] && !state->m_pressedKeys[m_rightKey]){ move(imp::Vector3(-speed, 0.f, 0.f)); } else if(state->m_pressedKeys[m_rightKey] && !state->m_pressedKeys[m_leftKey]){ move(imp::Vector3(speed, 0.f, 0.f)); } if(state->m_pressedKeys[m_zoomOutKey]) { move(imp::Vector3(0.f, 0.f, 1.f)); } else if(state->m_pressedKeys[m_zoomInKey]) { move(imp::Vector3(0.f, 0.f, -1.f)); } updateFov(); }
IMPGEARS_BEGIN //-------------------------------------------------------------- StrategicCamera::StrategicCamera() { setPosition(imp::Vector3(100.f, 100.f, 100.f)); setTarget(getPosition()+Vector3(0.f, 1.f, -1.f)); setDefaultKeyBinding(); updateFov(); }
status_t ParamsManager:: setParameters(CameraParameters const& params) { IParamsManager::showParameters(params.flatten()); // status_t status = OK; bool bIsSceneChanged = false; Size oldPrvSize, tmpPrvSize, newPrvSize; Size oldPicSize, newPicSize; // // (1) Check to see if new parameters are valid or not. if ( OK != (status = checkParams(params)) ) { MY_LOGE("checkParams() return %d", status); return status; } // (2) Check to see if Scene Changes or not. MY_LOGD("%d: +", getOpenId()); RWLock::AutoWLock _lock(mRWLock); MY_LOGD("AutoWLock"); // char const*const pOldScene = mParameters.get(CameraParameters::KEY_SCENE_MODE); char const*const pNewScene = params.get(CameraParameters::KEY_SCENE_MODE); if ( 0 != ::strcmp(pOldScene, pNewScene) ) { // scene mode has changed MY_LOGD("Scene change: %s -> %s", pOldScene, pNewScene); bIsSceneChanged = true; } // // (3.1) Check to see if Preview Size Changes or not. Get old preview size mParameters.getPreviewSize(&oldPrvSize.width, &oldPrvSize.height); params.getPreviewSize(&tmpPrvSize.width, &tmpPrvSize.height); // (3.2) Get old&new picture size mParameters.getPictureSize(&oldPicSize.width, &oldPicSize.height); params.getPictureSize(&newPicSize.width, &newPicSize.height); // (4) Update Parameter mParameters = params; if ( bIsSceneChanged ) { if ( ! updateSceneAndParams() ) { status = BAD_VALUE; } } // (5) Update Parameter: preview size updatePreviewSize(); // (6) Update FOV according to picture size MY_LOGI("picSZ(%d,%d)->(%d,%d)",oldPicSize.width,oldPicSize.height,newPicSize.width,newPicSize.height); if(oldPicSize.width != newPicSize.width || oldPicSize.height != newPicSize.height) { updateFov(newPicSize); } // (3.2) Check to see if Preview Size Changes or not. Get new preview size mParameters.getPreviewSize(&newPrvSize.width, &newPrvSize.height); if ( oldPrvSize.width != newPrvSize.width || oldPrvSize.height != newPrvSize.height ) { MY_LOGD( "Preview Size change: %dx%d/%dx%d -> (%dx%d)", oldPrvSize.width, oldPrvSize.height, tmpPrvSize.width, tmpPrvSize.height, newPrvSize.width, newPrvSize.height ); } // MY_LOGD("-"); return status; }