// Tries to activate a certain rotation fallback.
	// If ActivateRotation is called, the best (in most cases) fallback is used.
	// There might be cases/devices where other approaches yield better results.
	// 
	// Returns true if fallback is available and activated.
	public static bool TryForceRotationFallback(RotationFallbackType fallbackType)
	{
#pragma warning disable 162
		// for platforms other than Android, always use RotationQuaternion
//		if(Application.platform != RuntimePlatform.Android)
//			fallbackType = RotationFallbackType.RotationQuaternion;
		if(Application.platform == RuntimePlatform.IPhonePlayer)
			fallbackType = RotationFallbackType.RotationQuaternion;

		switch(fallbackType)
		{
		    case RotationFallbackType.RotationQuaternion:
			    if (Sensor.Get(Sensor.Type.RotationVector).available)
			    {
				    Sensor.Activate(Sensor.Type.RotationVector);
				    rotationHelper = new GetRotationHelper(RotationQuaternion);
				    current = RotationFallbackType.RotationQuaternion;
					
					Debug.Log("RotationVector is available.");
				    return true;
			    }
		        break;
		    case RotationFallbackType.OrientationAndAcceleration:
			    if (Sensor.Get(Sensor.Type.Orientation).available)
			    {
				    Sensor.Activate(Sensor.Type.Orientation);
				    rotationHelper = new GetRotationHelper(OrientationAndAcceleration);
					current = RotationFallbackType.OrientationAndAcceleration;
				    
					Debug.Log("Orientation/Acceleration is available.");
			        return true;
			    }
		        break;
		    case RotationFallbackType.MagneticField:
			    if (Sensor.Get(Sensor.Type.MagneticField).available)
			    {
				    Sensor.Activate(Sensor.Type.Accelerometer);
				    Sensor.Activate(Sensor.Type.MagneticField);
				    rotationHelper = new GetRotationHelper(MagneticField);
					current = RotationFallbackType.MagneticField;
				
					Debug.Log("Accelerometer/MagneticField is available.");
			        return true;
			    }
		        break;
			case RotationFallbackType.AccelerationOnly:
				{
					rotationHelper = new GetRotationHelper(InputAcceleration);
					Debug.Log("InputAcceleration is available - no compass support.");
					return true;
				}
				break;
		}

		return false;
#pragma warning restore 162
	}
Exemple #2
0
    // Tries to activate a certain rotation fallback.
    // If ActivateRotation is called, the best (in most cases) fallback is used.
    // There might be cases/devices where other approaches yield better results.
    //
    // Returns true if fallback is available and activated.
    public static bool TryForceRotationFallback(RotationFallbackType fallbackType)
    {
#pragma warning disable 162
        switch (fallbackType)
        {
        case RotationFallbackType.RotationQuaternion:
            if (Sensor.Get(Sensor.Type.RotationVector).available)
            {
                Sensor.Activate(Sensor.Type.RotationVector);
                _rotationHelper = new GetRotationHelper(RotationQuaternion);
                current         = RotationFallbackType.RotationQuaternion;

                Debug.Log("First sensor choice is available.");
                return(true);
            }
            break;

        case RotationFallbackType.OrientationAndAcceleration:
            if (Sensor.Get(Sensor.Type.Orientation).available)
            {
                Sensor.Activate(Sensor.Type.Orientation);
                _rotationHelper = new GetRotationHelper(OrientationAndAcceleration);
                current         = RotationFallbackType.OrientationAndAcceleration;

                Debug.Log("Second sensor choice is available.");
                return(true);
            }
            break;

        case RotationFallbackType.MagneticField:
            if (Sensor.Get(Sensor.Type.MagneticField).available)
            {
                Sensor.Activate(Sensor.Type.Accelerometer);
                Sensor.Activate(Sensor.Type.MagneticField);
                _rotationHelper = new GetRotationHelper(MagneticField);
                current         = RotationFallbackType.MagneticField;

                Debug.Log("Third sensor choice is available.");
                return(true);
            }
            break;
        }
        return(false);

#pragma warning restore 162
    }
    // Call this to activate the best available rotation sensor
    public static void ActivateRotation()
    {
        // looks which sensors are available
        // and uses the best one for rotation calculation

        gotFirstValue = false;

        if (Sensor.Get(Sensor.Type.RotationVector).available)
        {
            // on iOS, first choice will always be used (others are made for Android)
            Sensor.Activate(Sensor.Type.RotationVector);
            _rotationHelper = new GetRotationHelper(RotationQuaternion);
            current = RotationFallbackType.RotationQuaternion;

            Debug.Log("RotationVector is available.");
        }
        else if (Sensor.Get(Sensor.Type.Orientation).available)
        {
            Sensor.Activate(Sensor.Type.Orientation);
            _rotationHelper = new GetRotationHelper(OrientationAndAcceleration);
            current = RotationFallbackType.OrientationAndAcceleration;

            Debug.Log("Orientation/Acceleration is available.");
        }
        else if (Sensor.Get(Sensor.Type.MagneticField).available)
        {
            Sensor.Activate(Sensor.Type.Accelerometer);
            Sensor.Activate(Sensor.Type.MagneticField);
            _rotationHelper = new GetRotationHelper(MagneticField);
            current = RotationFallbackType.MagneticField;

            Debug.Log("Accelerometer/MagneticField is available.");
        }
        else
        {
            _rotationHelper = new GetRotationHelper(InputAcceleration);
            Debug.Log("InputAcceleration is available - no compass support.");
        }
    }
Exemple #4
0
    // Call this to activate the best available rotation sensor
    public static void ActivateRotation()
    {
        // looks which sensors are available
        // and uses the best one for rotation calculation

        gotFirstValue = false;

        if (Sensor.Get(Sensor.Type.RotationVector).available)
        {
            // on iOS, first choice will always be used (others are made for Android)
            Sensor.Activate(Sensor.Type.RotationVector);
            _rotationHelper = new GetRotationHelper(RotationQuaternion);
            current         = RotationFallbackType.RotationQuaternion;

            Debug.Log("RotationVector is available.");
        }
        else if (Sensor.Get(Sensor.Type.Orientation).available)
        {
            Sensor.Activate(Sensor.Type.Orientation);
            _rotationHelper = new GetRotationHelper(OrientationAndAcceleration);
            current         = RotationFallbackType.OrientationAndAcceleration;

            Debug.Log("Orientation/Acceleration is available.");
        }
        else if (Sensor.Get(Sensor.Type.MagneticField).available)
        {
            Sensor.Activate(Sensor.Type.Accelerometer);
            Sensor.Activate(Sensor.Type.MagneticField);
            _rotationHelper = new GetRotationHelper(MagneticField);
            current         = RotationFallbackType.MagneticField;

            Debug.Log("Accelerometer/MagneticField is available.");
        }
        else
        {
            _rotationHelper = new GetRotationHelper(InputAcceleration);
            Debug.Log("InputAcceleration is available - no compass support.");
        }
    }
    // Tries to activate a certain rotation fallback.
    // If ActivateRotation is called, the best (in most cases) fallback is used.
    // There might be cases/devices where other approaches yield better results.
    //
    // Returns true if fallback is available and activated.
    public static bool TryForceRotationFallback(RotationFallbackType fallbackType)
    {
        #pragma warning disable 162
        switch(fallbackType)
        {
            case RotationFallbackType.RotationQuaternion:
                if (Sensor.Get(Sensor.Type.RotationVector).available)
                {
                    Sensor.Activate(Sensor.Type.RotationVector);
                    _rotationHelper = new GetRotationHelper(RotationQuaternion);
                    current = RotationFallbackType.RotationQuaternion;

                    Debug.Log("First sensor choice is available.");
                    return true;
                }
                break;
            case RotationFallbackType.OrientationAndAcceleration:
                if (Sensor.Get(Sensor.Type.Orientation).available)
                {
                    Sensor.Activate(Sensor.Type.Orientation);
                    _rotationHelper = new GetRotationHelper(OrientationAndAcceleration);
                    current = RotationFallbackType.OrientationAndAcceleration;

                    Debug.Log("Second sensor choice is available.");
                    return true;
                }
                break;
            case RotationFallbackType.MagneticField:
                if (Sensor.Get(Sensor.Type.MagneticField).available)
                {
                    Sensor.Activate(Sensor.Type.Accelerometer);
                    Sensor.Activate(Sensor.Type.MagneticField);
                    _rotationHelper = new GetRotationHelper(MagneticField);
                    current = RotationFallbackType.MagneticField;

                    Debug.Log("Third sensor choice is available.");
                    return true;
                }
                break;
        }
        return false;
        #pragma warning restore 162
    }
    // Tries to activate a certain rotation fallback.
    // If ActivateRotation is called, the best (in most cases) fallback is used.
    // There might be cases/devices where other approaches yield better results.
    //
    // Returns true if fallback is available and activated.
    public static bool TryForceRotationFallback(RotationFallbackType fallbackType)
    {
#pragma warning disable 162
        // for platforms other than Android, always use RotationQuaternion
//		if(Application.platform != RuntimePlatform.Android)
//			fallbackType = RotationFallbackType.RotationQuaternion;
        if (Application.platform == RuntimePlatform.IPhonePlayer)
        {
            fallbackType = RotationFallbackType.RotationQuaternion;
        }

        switch (fallbackType)
        {
        case RotationFallbackType.RotationQuaternion:
            if (Sensor.Get(Sensor.Type.GameRotationVector).available)
            {
                Sensor.Activate(Sensor.Type.GameRotationVector);
            }
            else if (Sensor.Get(Sensor.Type.RotationVector).available)
            {
                Sensor.Activate(Sensor.Type.RotationVector);
            }
            if (Sensor.Get(Sensor.Type.GameRotationVector).available || Sensor.Get(Sensor.Type.RotationVector).available)
            {
                rotationHelper = new GetRotationHelper(RotationQuaternion);
                current        = RotationFallbackType.RotationQuaternion;

                Debug.Log("RotationVector is available.");
                return(true);
            }
            break;

        case RotationFallbackType.OrientationAndAcceleration:
            if (Sensor.Get(Sensor.Type.Orientation).available)
            {
                Sensor.Activate(Sensor.Type.Orientation);
                rotationHelper = new GetRotationHelper(OrientationAndAcceleration);
                current        = RotationFallbackType.OrientationAndAcceleration;

                Debug.Log("Orientation/Acceleration is available.");
                return(true);
            }
            break;

        case RotationFallbackType.MagneticField:
            if (Sensor.Get(Sensor.Type.MagneticField).available)
            {
                Sensor.Activate(Sensor.Type.Accelerometer);
                Sensor.Activate(Sensor.Type.MagneticField);
                rotationHelper = new GetRotationHelper(MagneticField);
                current        = RotationFallbackType.MagneticField;

                Debug.Log("Accelerometer/MagneticField is available.");
                return(true);
            }
            break;

        case RotationFallbackType.AccelerationOnly:
        {
            rotationHelper = new GetRotationHelper(InputAcceleration);
            Debug.Log("InputAcceleration is available - no compass support.");
            return(true);
        }
        break;
        }

        return(false);

#pragma warning restore 162
    }