This repository has been archived on 2024-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
snakeinabox/Assets/SpaceNavigator/Plugins/SpaceNavigator.cs
2020-07-09 11:41:01 -07:00

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 -
}
}