public void update(double dt) {
		translatePosition = new Vector4(0, 0, 0);
		translateLookAt = new Vector4(0, 0, 0);
		// moze sie troche dziwne wydawac ale dziala poprawnie
		localXAxis.setX(_lookAt.getZ() * -1);
		localXAxis.setZ(_lookAt.getX());
		localXAxis.normalize();

		Vector4D newXAxis = new Vector4(localXAxis);
		newXAxis.multiply(_xAxisMovement * dt);
		Vector4D newlook = new Vector4(_lookAt);

		if (_xAxisMovement != 0) {
			translatePosition.add(newXAxis);
		}

		if (_zAxisMovement != 0) {
			translatePosition.add(newlook.multiply(_zAxisMovement * dt));
		}

		if (_xAxisRotate != 0) {

			_lookAt.arbitraryAxisRotation(_xAxisRotate
					* _cameraRotateSpeedKeyboard * dt, localXAxis);

		}
		if (_yAxisRotate != 0) {
			_lookAt.yAxisRotation(-_yAxisRotate * _cameraRotateSpeedKeyboard
					* dt);
		}
		

		if (!translatePosition.isNull()) {
			translatePosition.normalize();
			_center.add(translatePosition.multiply(_cameraMoveSpeed * dt));
		}
		
	}