Esempio n. 1
0
//--------------------------------------------------------------
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();
}
Esempio n. 2
0
IMPGEARS_BEGIN

//--------------------------------------------------------------
StrategicCamera::StrategicCamera()
{
    setPosition(imp::Vector3(100.f, 100.f, 100.f));
    setTarget(getPosition()+Vector3(0.f, 1.f, -1.f));
	setDefaultKeyBinding();
    updateFov();
}
Esempio n. 3
0
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;
}