Exemple #1
0
nitf::HashTable nitf::HashTable::clone(NITF_DATA_ITEM_CLONE cloner) throw(nitf::NITFException)
{
    nitf::HashTable dolly(nitf_HashTable_clone(getNativeOrThrow(),
        cloner, &error));
    dolly.setManaged(false);
    return dolly;
}
        bool TrackballTransformManipulator::updateFrame( float dt )
        {
          bool result = false;

          if( m_transformPath && getViewState() && getRenderTarget() )
          {
            switch( m_mode )
            {
              case Mode::ROTATE:
                result = rotate();
                break;

              case Mode::PAN:
                result = pan();
                break;

              case Mode::DOLLY:
                result = dolly();
                break;

              default:
                break;
            }
          }

          return result; 
        }
Exemple #3
0
void ofxFPSCam::update() {
    float v;
    v = key_state[key_assign[RIGHT]] ? move_speed : 0;
    v -= key_state[key_assign[LEFT]] ? move_speed : 0;
    velocity_side += (v - velocity_side) * 0.2;
    truck(velocity_side);
    
    v = key_state[key_assign[BACK]] ? move_speed : 0;
    v -= key_state[key_assign[FORWARD]] ? move_speed : 0;
    velocity_forward += (v - velocity_forward) * 0.2;
    dolly(velocity_forward);
    
    v = key_state[key_assign[UP]] ? move_speed : 0;
    v -= key_state[key_assign[DOWN]] ? move_speed : 0;
    velocity_upward += (v - velocity_upward) * 0.2;
    boom(velocity_upward);
    
    v = key_state[key_assign[PAN_LEFT]] ? rotate_speed : 0;
    v -= key_state[key_assign[PAN_RIGHT]] ? rotate_speed : 0;
    velocity_pan += (v - velocity_pan) * 0.2;
    rotate(velocity_pan, ofVec3f(0, 1, 0));
    
    v = key_state[key_assign[TILT_UP]] ? rotate_speed : 0;
    v -= key_state[key_assign[TILT_DOWN]] ? rotate_speed : 0;
    velocity_tilt += (v - velocity_tilt) * 0.2;
    rotate(velocity_tilt, getSideDir());
}
//----------------------------------------
void ofxViewportCam::frameBoundingBox(const ofVec3f &minCorner,
                                     const ofVec3f &maxCorner)
{
    ofVec3f center((minCorner + maxCorner) * 0.5f);
    setTargetPosition(center);
    this->distance = minCorner.distance(maxCorner);
    
    setPosition(target.getGlobalPosition());
    dolly(this->distance);
}
//----------------------------------------
void ofxViewportCam::tumble(float yaw, float pitch)
{
    const float tumbleAmount = 0.25f;
    this->tiltAmount += pitch * tumbleAmount;
    this->panAmount += yaw * tumbleAmount;
        
    if(this->isTargetSet)
    {
        // Move to tumble point.
        const ofVec3f targetPos(target.getGlobalPosition());
        setPosition(targetPos);

        // Reset orientation to identity.
        setOrientation(ofQuaternion(0, 0, 0, 1));

        // Apply tumble.
        pan(this->panAmount);
        tilt(this->tiltAmount);

        // Re-apply pre-existing track and zoom.
        dolly(this->distance);
        truck(this->truckAmount);
        boom(this->boomAmount);
    }
    else
    {
        // Move to tumble point.
        dolly(-this->distance);

        // Reset orientation to identity.
        setOrientation(ofQuaternion(0, 0, 0, 1));

        // Apply tumble.
        pan(this->panAmount);
        tilt(this->tiltAmount);

        // Move back.
        dolly(this->distance);
    }
}
Exemple #6
0
 //static void MouseMoveHandler(GLFWwindow* window, double posx, double posy);
 //static void MouseScrollHandler(GLFWwindow* window, double xoffset, double yoffset);
 void onMouseMove(double posx, double posy) {
     vec2 mouse = vec2(posx, posy);
     vec2 delta = mouse - _lastMouse;
     if (keys.at(Key::MRIGHT)) {
         dolly(delta.y * 0.01f);
     } else if (keys.at(Key::MLEFT)) {
         rotate(delta.x * -0.01f);
     } else if (keys.at(Key::MMIDDLE)) {
         delta.y *= -1.0f;
         translate(delta * -0.01f);
     }
     _lastMouse = mouse;
 }
Exemple #7
0
void ofxGamepadCamera::update(ofEventArgs& e) {
	if(pad == NULL)
		return;

	float curTime = ofGetElapsedTimef();

	float mult = curTime - lastTime;
	pan(-pad->getAxisValue(PS3_STICK_R_X)*speedRotation*mult);
	tilt(-pad->getAxisValue(PS3_STICK_R_Y)*speedRotation*mult);

	truck(pad->getAxisValue(PS3_STICK_L_X)*speedMove*mult);
	boom(-pad->getAxisValue(PS3_STICK_L_Y)*speedMove*mult);

	if(useAnalogueDolly) {
		dolly(-(pad->getAxisValueU(PS3_THRUST_L2)-.5)*speedMove*mult);
		dolly((pad->getAxisValueU(PS3_THRUST_R2)-.5)*speedMove*mult);
	} else {
		if(pad->getButtonValue(PS3_BTN_L2)) {
			dolly(-speedMove*2*mult);
		}
		if(pad->getButtonValue(PS3_BTN_R2)) {
			dolly(speedMove*2*mult);
		}
	}

	if(pad->getButtonValue(PS3_BTN_L1)) {
		roll(-speedRotation*.7*mult);
	}
	if(pad->getButtonValue(PS3_BTN_R1)) {
		roll(speedRotation*.7*mult);
	}

	if(pad->getButtonValue(PS3_BTN_SELECT))
		reset();

	lastTime = curTime;
}
Exemple #8
0
    void onMouseMove(QMouseEvent* event) {
        vec2 mouse = toGlm(event->localPos());
        vec2 delta = mouse - _lastMouse;
        auto buttons = event->buttons();
        if (buttons & Qt::RightButton) {
            dolly(delta.y * 0.01f);
        } else if (buttons & Qt::LeftButton) {
            rotate(delta.x * -0.01f);
        } else if (buttons & Qt::MiddleButton) {
            delta.y *= -1.0f;
            translate(delta * -0.01f);
        }

        _lastMouse = mouse;
    }
//----------------------------------------
void ofxViewportCam::setTargetPosition(const ofVec3f &pos)
{
	this->target.setPosition(pos);
	this->isTargetSet = true;

    // Move to tumble point.
    const ofVec3f targetPos(target.getGlobalPosition());
    setPosition(targetPos);

    // Reset orientation to identity.
    setOrientation(ofQuaternion(0, 0, 0, 1));

    // Apply tumble.
    pan(this->panAmount);
    tilt(this->tiltAmount);

    // Re-apply pre-existing track and zoom.
    dolly(this->distance);
    truck(this->truckAmount);
    boom(this->boomAmount);
}
Exemple #10
0
void Camera::mouseDragged(ofMouseEventArgs& event) 
{
	if(event.button == 0)
	{
		tumble(prevMouseX, prevMouseY, event.x, event.y);
	}
	else if(event.button == 1)
	{
		track(prevMouseX, prevMouseY, event.x, event.y);
	}
	else if(event.button == 2)
	{
		dolly(prevMouseX, prevMouseY, event.x, event.y);
		setClippingPlane();
	}

	prevMouseX = event.x;
	prevMouseY = event.y;

	mouseClicked = false;;

}
//----------------------------------------
void ofxViewportCam::zoom(float delta)
{
    this->distance -= delta;
    dolly(-delta);
}
Exemple #12
0
nitf::ImageSubheader ImageSubheader::clone() throw(nitf::NITFException)
{
    nitf::ImageSubheader dolly(nitf_ImageSubheader_clone(getNativeOrThrow(), &error));
    dolly.setManaged(false);
    return dolly;
}
void ofxGameCamera::update(ofEventArgs& args){	
	rotationChanged = false;
	positionChanged = false;
	if(applyTranslation){
		int multiplier = invertControls ? -1 : 1;
		if(ofGetKeyPressed('w') || (useArrowKeys && ofGetKeyPressed(OF_KEY_UP)) ){
			if(dampen){
				targetNode.dolly(-speed);
			}else{
				dolly(-speed);
			}
			positionChanged = true;
		}
		
		if(ofGetKeyPressed('s') || (useArrowKeys && ofGetKeyPressed(OF_KEY_DOWN)) ){
			if(dampen){
				targetNode.dolly(speed);
			}else{
				dolly(speed);
			}
			positionChanged = true;
		}
		
		if(ofGetKeyPressed('a') || (useArrowKeys && ofGetKeyPressed(OF_KEY_LEFT)) ){
			if(dampen){
				targetNode.truck(-speed);
			}else{
				truck(-speed);
			}
			positionChanged = true;
		}
		
		if(ofGetKeyPressed('d') || (useArrowKeys && ofGetKeyPressed(OF_KEY_RIGHT)) ){
			if(dampen){
				targetNode.truck(speed);
			}
			else{
				truck(speed);
			}
			positionChanged = true;
		}
		
		if(ofGetKeyPressed('c') || (useArrowKeys && ofGetKeyPressed(OF_KEY_PAGE_DOWN)) ){
			if(dampen){
				targetNode.boom(-speed*multiplier);
			}
			else{
				boom(-speed*multiplier);
			}
			positionChanged = true;
		}
		
		if(ofGetKeyPressed('e') || (useArrowKeys && ofGetKeyPressed(OF_KEY_PAGE_UP)) ){
			if(dampen){
				targetNode.boom(speed*multiplier);
			}
			else{
				boom(speed*multiplier);
			}
			positionChanged = true;
		}
	}
	
	if(applyRotation){
		if(ofGetKeyPressed('r')){
			targetZRot += rollSpeed;
			rotationChanged = true;
		}
		if(ofGetKeyPressed('q')){
			targetZRot -= rollSpeed;
			rotationChanged = true;
		}
	}
	
	if(dampen){
		setPosition(getPosition() + (targetNode.getPosition() - getPosition()) *.2);
	}
	ofVec2f mouse( ofGetMouseX(), ofGetMouseY() );
	if(usemouse && applyRotation && ofGetMousePressed(0)){
        if(!justResetAngles){

			float dx = (mouse.x - lastMouse.x) * sensitivityX;
			float dy = (mouse.y - lastMouse.y) * sensitivityY;
//			cout << "b4 DX DY! " << dx << " " << dy << " " << targetXRot << " " << targetYRot << endl;
			targetXRot += dx * (invertControls ? -1 : 1);
			targetYRot += dy * (invertControls ? -1 : 1);
//			targetYRot = ClampAngle(targetYRot, minimumY, maximumY);
//			targetXRot = ClampAngle(targetXRot, minimumX, maximumX);
//			cout << "after DX DY! " << dx << " " << dy << " " << targetXRot << " " << targetYRot << endl;
			rotationChanged = true;
		}
		justResetAngles = false;
	}
	
	if(rotationChanged){
		updateRotation();		
	}
	
	lastMouse = mouse;
    
	if(!ofGetMousePressed(0) && autosavePosition && (rotationChanged || positionChanged)){
		saveCameraPosition();
	}
}