54 lines
No EOL
1.4 KiB
C#
54 lines
No EOL
1.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
#if UNITY_EDITOR
|
|
using UnityEditor;
|
|
#endif
|
|
|
|
namespace SpaceNavigatorDriver {
|
|
|
|
public abstract class SpaceNavigator : IDisposable {
|
|
// Public runtime API
|
|
public static Vector3 Translation {
|
|
get { return Instance.GetTranslation(); }
|
|
}
|
|
public static Quaternion Rotation {
|
|
get { return Instance.GetRotation(); }
|
|
}
|
|
public static Quaternion RotationInLocalCoordSys(Transform coordSys) {
|
|
return coordSys.rotation * Rotation * Quaternion.Inverse(coordSys.rotation);
|
|
}
|
|
public static void SetTranslationSensitivity(float newPlayTransSens) {
|
|
Settings.PlayTransSens = newPlayTransSens;
|
|
}
|
|
public static void SetRotationSensitivity(float newPlayRotSens) {
|
|
Settings.PlayRotSens = newPlayRotSens;
|
|
}
|
|
|
|
// Abstract members
|
|
public abstract Vector3 GetTranslation();
|
|
public abstract Quaternion GetRotation();
|
|
|
|
#region - Singleton -
|
|
public static SpaceNavigator Instance {
|
|
get {
|
|
if (_instance == null) {
|
|
#if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN
|
|
_instance = SpaceNavigatorWindows.SubInstance;
|
|
#endif
|
|
#if UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX
|
|
_instance = SpaceNavigatorMac.SubInstance;
|
|
#endif
|
|
}
|
|
return _instance;
|
|
}
|
|
set { _instance = value; }
|
|
}
|
|
private static SpaceNavigator _instance;
|
|
#endregion - Singleton -
|
|
|
|
#region - IDisposable -
|
|
public abstract void Dispose();
|
|
#endregion - IDisposable -
|
|
}
|
|
} |