示例#1
0
void CameraFlight::menuCallback(cvr::MenuItem * item)
{
    if (item == _instant)
    {
	if(activeMode != item)
	{
	    activeMode->setValue(false);
	    std::cerr<<"Instant Transition has selected"<<std::endl;
	}

	activeMode = _instant;
	_instant->setValue(true);
	_flightMode = INSTANT;
    }

    else if (item == _satellite)
    {
	if(activeMode != item)
	{
	    activeMode->setValue(false);
	    std::cerr<<"Satellite Transition has selected"<<std::endl;
	}

	activeMode = _satellite;
	_satellite->setValue(true);
	_flightMode = SATELLITE;
    }

    else if (item == _reset)
    {
	if(activeMode != item)
	{
	    activeMode->setValue(false);
	    std::cerr<<"Reset Back to original"<<std::endl;
	}

	activeMode = _reset;
	_reset->setValue(true);
	
	SceneManager::instance()->setObjectMatrix(_origMatrix);
	SceneManager::instance()->setObjectScale(_origScale);
    }

    else if (item == _dest1)
    {
	if(destMode != item && destMode != NULL)
	{
	    destMode->setValue(false);
	    _dest1->setValue(true);
	}

	if(destMode != item) {
	    destMode = _dest1;
	    _destMat.set(_destMat1);
	    _destVec.set(0.573827, -2.04617, 0.0);
	    navigate(_destMat, _destVec);
	}
	else {
	    destMode = _dest1;
	}
	
    }

    else if (item == _dest2)
    {
	if(destMode != item && destMode != NULL)
	{
	    destMode->setValue(false);
	}

	destMode = _dest2;
	_dest2->setValue(true);
	_destMat.set(_destMat2);
	_destVec.set(0.622566, 2.43884, 0.0);
	navigate(_destMat, _destVec);
    }

    else if (item == _dest3)
    {
	if(destMode != item && destMode != NULL)
	{
	    destMode->setValue(false);
	}

	destMode = _dest3;
	_dest3->setValue(true);
	_destMat.set(_destMat3);
	_destVec.set(-1.51126, 1.54642, 0.0);
	navigate(_destMat, _destVec);
    }

    else if (item == _dest4)
    {
	if(destMode != item && destMode != NULL)
	{
	    destMode->setValue(false);
	}

	destMode = _dest4;
	_dest4->setValue(true);
	_destMat.set(_destMat4);
	_destVec.set(-0.590719, 2.63979, 0.0);
	navigate(_destMat, _destVec);
    }

    else if (item == _dest5)
    {
	if(destMode != item && destMode != NULL)
	{
	    destMode->setValue(false);
	}

	destMode = _dest5;
	_dest5->setValue(true);
	_destMat.set(_destMat5);
	_destVec.set(0.67315, 0.389608, 0.0);
	navigate(_destMat, _destVec);
    }
 
    else if (item == _dest6)
    {
	if(destMode != item && destMode != NULL)
	{
	    destMode->setValue(false);
	}

	destMode = _dest6;
	_dest6->setValue(true);
	_destMat.set(_destMat6);
	_destVec.set(0.590992, -2.05847, 0.0);
	navigate(_destMat, _destVec);
    }
}