Firstborn/Assets/AwesomeTechnologies/TouchReactSystemPro/Runtime/TRSceneViewDetector.cs

61 lines
1.8 KiB
C#
Raw Permalink Normal View History

using UnityEngine;
#if UNITY_EDITOR
using UnityEditor;
namespace AwesomeTechnologies.TouchReact
{
[InitializeOnLoad]
public class TrSceneViewDetector : MonoBehaviour
{
private static EditorWindow _currentEditorWindow;
private static SceneView _currentSceneView;
public delegate void MultiVegetationCellRefreshDelegate(Camera sceneviewCamera);
public static MultiVegetationCellRefreshDelegate OnChangedSceneViewCameraDelegate;
static TrSceneViewDetector()
{
EditorApplication.update += UpdateEditorCallback;
}
private static void UpdateEditorCallback()
{
if (_currentEditorWindow == EditorWindow.focusedWindow) return;
_currentEditorWindow = EditorWindow.focusedWindow;
var view = _currentEditorWindow as SceneView;
if (view != null)
{
if (_currentSceneView != view)
{
_currentSceneView = view;
OnChangedSceneViewCameraDelegate?.Invoke(_currentSceneView.camera);
}
}
}
public static Camera GetCurrentSceneViewCamera()
{
if (_currentSceneView != null)
{
//Debug.Log("returning current sceneview camera");
return _currentSceneView.camera;
}
Camera[] sceneviewCameras = SceneView.GetAllSceneCameras();
return sceneviewCameras.Length > 0 ? sceneviewCameras[0] : null;
}
// ReSharper disable once UnusedMember.Local
void DisableEditorApi()
{
// ReSharper disable once DelegateSubtraction
EditorApplication.update -= UpdateEditorCallback;
}
}
}
#endif