You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.6 KiB
C#

using System;
using System.Linq;
using System.Reflection;
using UnityEngine;
using UnityEditor;
using UnityEngine.EventSystems;
using Object = UnityEngine.Object;
namespace CnControls
{
/// <summary>
/// Some helping and guiding info trying to fix some common CNControls setup mistakes
/// </summary>
[InitializeOnLoad]
public class AdditionaHelpingGuidance
{
static AdditionaHelpingGuidance()
{
EditorApplication.playmodeStateChanged += PlaymodeStateChanged;
}
private static void PlaymodeStateChanged()
{
// If we've just changed our mode to a playmode
if (EditorApplication.isPlaying && EditorApplication.isPlayingOrWillChangePlaymode)
{
var types = from t in Assembly.GetAssembly(typeof(SimpleButton)).GetTypes()
where
t.IsClass
&& t.Namespace == "CnControls"
&& t.IsSubclassOf(typeof(MonoBehaviour))
select t;
// If there are any CnControls on the scene
bool shouldCheckForErrors = types.Any(type => Object.FindObjectOfType(type));
if (shouldCheckForErrors)
{
CheckForEventSystemPresence();
}
}
}
private static void CheckForEventSystemPresence()
{
var eventSystem = Object.FindObjectOfType<EventSystem>();
if (eventSystem == null)
{
ErrorPopupWindow.ShowWindow();
}
}
}
}