using UnityEditor; using UnityEditor.SceneManagement; using UnityEngine; namespace Passer.CreatureControl { [CustomEditor(typeof(Creature), true)] public class Creature_Editor : Editor { protected Creature creature; #region Init public virtual void OnEnable() { creature = target as Creature; bool anythingChanged = false; if (!IsPrefab(creature)) { anythingChanged |= creature.CheckTargetRig(); anythingChanged |= creature.CheckModel(); } creature.targetRig.MatchTo(creature, ref anythingChanged); if (anythingChanged) { EditorUtility.SetDirty(creature); AssetDatabase.SaveAssets(); } } public static bool IsPrefab(Creature creature) { PrefabStage prefabStage = PrefabStageUtility.GetPrefabStage(creature.gameObject); return prefabStage != null; } #endregion Init #region Scene public virtual void OnSceneGUI() { if (Application.isPlaying || creature.enabled == false) return; creature.UpdatePose(); } #endregion Scene } }