From 7c22b52489b5630beab0007972b44e5421cc67e1 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Sun, 17 Apr 2016 19:20:43 +0600 Subject: [PATCH] IsoWorld static instance --- .../Scripts/Internal/Editor/IsoObjectEditor.cs | 6 +++--- Assets/IsoTools/Scripts/IsoObject.cs | 8 +++----- Assets/IsoTools/Scripts/IsoWorld.cs | 17 +++++++++++++++++ .../Internal/Editor/TiledMapAssetEditor.cs | 2 +- 4 files changed, 24 insertions(+), 9 deletions(-) diff --git a/Assets/IsoTools/Scripts/Internal/Editor/IsoObjectEditor.cs b/Assets/IsoTools/Scripts/Internal/Editor/IsoObjectEditor.cs index 305e66b..9bc9483 100644 --- a/Assets/IsoTools/Scripts/Internal/Editor/IsoObjectEditor.cs +++ b/Assets/IsoTools/Scripts/Internal/Editor/IsoObjectEditor.cs @@ -13,7 +13,7 @@ namespace IsoTools.Internal { Vector3 _viewCenter = Vector3.zero; void GrabPositions() { - var iso_world = GameObject.FindObjectOfType(); + var iso_world = IsoWorld.Instance; if ( iso_world ) { _positions = targets .Where(p => p is IsoObject) @@ -97,7 +97,7 @@ namespace IsoTools.Internal { } void ZMoveSlider() { - var iso_world = GameObject.FindObjectOfType(); + var iso_world = IsoWorld.Instance; if ( iso_world ) { Handles.color = Handles.zAxisColor; var delta = Handles.Slider(_viewCenter, IsoUtils.vec3OneY) - _viewCenter; @@ -109,7 +109,7 @@ namespace IsoTools.Internal { } void XYMoveSlider(Color color, Vector3 dir) { - var iso_world = GameObject.FindObjectOfType(); + var iso_world = IsoWorld.Instance; if ( iso_world ) { Handles.color = color; var delta = Handles.Slider(_viewCenter, iso_world.IsoToScreen(dir)) - _viewCenter; diff --git a/Assets/IsoTools/Scripts/IsoObject.cs b/Assets/IsoTools/Scripts/IsoObject.cs index c9f9316..e0674d5 100644 --- a/Assets/IsoTools/Scripts/IsoObject.cs +++ b/Assets/IsoTools/Scripts/IsoObject.cs @@ -238,13 +238,11 @@ namespace IsoTools { // // --------------------------------------------------------------------- - IsoWorld _isoWorld = null; public IsoWorld isoWorld { get { - if ( !_isoWorld && gameObject.activeInHierarchy ) { - _isoWorld = GameObject.FindObjectOfType(); - } - return _isoWorld; + return gameObject.activeInHierarchy + ? IsoWorld.Instance + : null; } } diff --git a/Assets/IsoTools/Scripts/IsoWorld.cs b/Assets/IsoTools/Scripts/IsoWorld.cs index a2072cc..8fc1b67 100644 --- a/Assets/IsoTools/Scripts/IsoWorld.cs +++ b/Assets/IsoTools/Scripts/IsoWorld.cs @@ -10,6 +10,8 @@ namespace IsoTools { [ExecuteInEditMode, DisallowMultipleComponent] public class IsoWorld : MonoBehaviour { + static IsoWorld _instance = null; + bool _dirty = false; IsoAssocList _objects = new IsoAssocList(); IsoAssocList _visibles = new IsoAssocList(); @@ -129,6 +131,21 @@ namespace IsoTools { } } + // --------------------------------------------------------------------- + // + // Instance + // + // --------------------------------------------------------------------- + + public static IsoWorld Instance { + get { + if ( !_instance ) { + _instance = GameObject.FindObjectOfType(); + } + return _instance; + } + } + // --------------------------------------------------------------------- // // IsoToScreen/ScreenToIso diff --git a/Assets/IsoTools/Tiled/Internal/Editor/TiledMapAssetEditor.cs b/Assets/IsoTools/Tiled/Internal/Editor/TiledMapAssetEditor.cs index aaa29ed..7baaab1 100644 --- a/Assets/IsoTools/Tiled/Internal/Editor/TiledMapAssetEditor.cs +++ b/Assets/IsoTools/Tiled/Internal/Editor/TiledMapAssetEditor.cs @@ -144,7 +144,7 @@ namespace IsoTools.Tiled.Internal { } IsoWorld GetIsoWorld() { - var iso_world = GameObject.FindObjectOfType(); + var iso_world = IsoWorld.Instance; if ( !iso_world ) { throw new UnityException("not found IsoWorld"); }