diff --git a/Assets/IsoTools/Scripts/Internal/IsoBehaviour.cs b/Assets/IsoTools/Scripts/Internal/IsoBehaviour.cs index a9f23d9..7dc6644 100644 --- a/Assets/IsoTools/Scripts/Internal/IsoBehaviour.cs +++ b/Assets/IsoTools/Scripts/Internal/IsoBehaviour.cs @@ -6,10 +6,7 @@ using UnityEditor; #endif namespace IsoTools.Internal { - public abstract class IsoBehaviour : MonoBehaviour - where T : IsoBehaviour - { - static IsoAssocList _behaviours = new IsoAssocList(); + public abstract class IsoBehaviour : MonoBehaviour { static List _tempWorlds = new List(); // --------------------------------------------------------------------- @@ -44,14 +41,6 @@ namespace IsoTools.Internal { return ret_value; } - protected static int AllBehaviourCount { - get { return _behaviours.Count; } - } - - protected static T GetBehaviourByIndex(int index) { - return _behaviours[index]; - } - // --------------------------------------------------------------------- // // Public @@ -61,25 +50,5 @@ namespace IsoTools.Internal { public bool IsActive() { return isActiveAndEnabled && gameObject.activeInHierarchy; } - - // --------------------------------------------------------------------- - // - // Virtual - // - // --------------------------------------------------------------------- - - protected virtual void OnEnable() { - var behaviour = this as T; - if ( behaviour && behaviour.IsActive() ) { - _behaviours.Add(behaviour); - } - } - - protected virtual void OnDisable() { - var behaviour = this as T; - if ( behaviour ) { - _behaviours.Remove(behaviour); - } - } } } \ No newline at end of file diff --git a/Assets/IsoTools/Scripts/Internal/IsoObjectBase.cs b/Assets/IsoTools/Scripts/Internal/IsoObjectBase.cs index d26b518..8bc0154 100644 --- a/Assets/IsoTools/Scripts/Internal/IsoObjectBase.cs +++ b/Assets/IsoTools/Scripts/Internal/IsoObjectBase.cs @@ -1,5 +1,5 @@ namespace IsoTools.Internal { - public abstract class IsoObjectBase : IsoBehaviour { + public abstract class IsoObjectBase : IsoBehaviour { IsoWorld _isoWorld = null; // --------------------------------------------------------------------- @@ -46,13 +46,11 @@ // // --------------------------------------------------------------------- - protected override void OnEnable() { - base.OnEnable(); + protected virtual void OnEnable() { Internal_RecacheIsoWorld(); } - protected override void OnDisable() { - base.OnDisable(); + protected virtual void OnDisable() { Internal_ResetIsoWorld(); } diff --git a/Assets/IsoTools/Scripts/Internal/IsoWorldBase.cs b/Assets/IsoTools/Scripts/Internal/IsoWorldBase.cs index 5a87bba..c8a627a 100644 --- a/Assets/IsoTools/Scripts/Internal/IsoWorldBase.cs +++ b/Assets/IsoTools/Scripts/Internal/IsoWorldBase.cs @@ -1,7 +1,7 @@ using System.Collections.Generic; namespace IsoTools.Internal { - public abstract class IsoWorldBase : IsoBehaviour { + public abstract class IsoWorldBase : IsoBehaviour { IsoAssocList _isoObjects = new IsoAssocList(); static List _tempIsoObjects = new List(); @@ -55,13 +55,11 @@ namespace IsoTools.Internal { // // --------------------------------------------------------------------- - protected override void OnEnable() { - base.OnEnable(); + protected virtual void OnEnable() { RecacheIsoObjectWorlds(); } - protected override void OnDisable() { - base.OnDisable(); + protected virtual void OnDisable() { RecacheIsoObjectWorlds(); } diff --git a/Assets/IsoTools/Scripts/IsoParent.cs b/Assets/IsoTools/Scripts/IsoParent.cs index dcb2626..24201e2 100644 --- a/Assets/IsoTools/Scripts/IsoParent.cs +++ b/Assets/IsoTools/Scripts/IsoParent.cs @@ -4,7 +4,7 @@ using IsoTools.Internal; namespace IsoTools { [SelectionBase] [ExecuteInEditMode, DisallowMultipleComponent] - public sealed class IsoParent : IsoBehaviour { + public sealed class IsoParent : IsoBehaviour { public IsoWorld isoWorld { get { return FindFirstActiveWorld(); diff --git a/Assets/IsoTools/Scripts/IsoWorld.cs b/Assets/IsoTools/Scripts/IsoWorld.cs index 4123947..10086d3 100644 --- a/Assets/IsoTools/Scripts/IsoWorld.cs +++ b/Assets/IsoTools/Scripts/IsoWorld.cs @@ -118,12 +118,14 @@ namespace IsoTools { // // --------------------------------------------------------------------- + static IsoAssocList _instances = new IsoAssocList(); + public static int AllWorldCount { - get { return AllBehaviourCount; } + get { return _instances.Count; } } public static IsoWorld GetWorld(int index) { - return GetBehaviourByIndex(index); + return _instances[index]; } // --------------------------------------------------------------------- @@ -358,7 +360,8 @@ namespace IsoTools { void UpdateIsoMatrix() { _isoMatrix = - Matrix4x4.Scale(new Vector3(1.0f, tileRatio, 1.0f)) * + Matrix4x4.Scale( + new Vector3(1.0f, tileRatio, 1.0f)) * Matrix4x4.TRS( Vector3.zero, Quaternion.AngleAxis(90.0f - tileAngle, IsoUtils.vec3OneZ), @@ -404,6 +407,9 @@ namespace IsoTools { protected override void OnEnable() { base.OnEnable(); + if ( IsActive() ) { + _instances.Add(this); + } } protected override void OnDisable() { @@ -411,6 +417,7 @@ namespace IsoTools { _screenSolver.Clear(); _sortingSolver.Clear(); _warningSolver.Clear(); + _instances.Remove(this); } protected override void OnAddIsoObjectToWorld(IsoObject iso_object) {