61 lines
1.8 KiB
C#
61 lines
1.8 KiB
C#
|
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
|