From 7c40167da8b71aec09a8cb444d4fd3af208f1cb7 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Tue, 27 Dec 2016 15:38:22 +0700 Subject: [PATCH] remove moving to deep for every new node --- .../IsoTools/Scripts/Internal/IsoQuadTree.cs | 29 +++++-------------- 1 file changed, 7 insertions(+), 22 deletions(-) diff --git a/Assets/IsoTools/Scripts/Internal/IsoQuadTree.cs b/Assets/IsoTools/Scripts/Internal/IsoQuadTree.cs index 9794720..f8d228d 100644 --- a/Assets/IsoTools/Scripts/Internal/IsoQuadTree.cs +++ b/Assets/IsoTools/Scripts/Internal/IsoQuadTree.cs @@ -86,13 +86,10 @@ namespace IsoTools.Internal { if ( has_any_nodes || Items.Count >= MinChildCountPerNode ) { for ( int i = 0, e = Nodes.Length; i < e; ++i ) { var node = Nodes[i]; - if ( node == null ) { - if ( NodeBounds[i].Contains(bounds) ) { - Nodes[i] = node = node_pool.Take().Init(this, NodeBounds[i]); - TryMoveItemsToNode(node); - if ( node.AddItem(bounds, content, out item, node_pool, item_pool) ) { - return true; - } + if ( node == null && NodeBounds[i].Contains(bounds) ) { + Nodes[i] = node = node_pool.Take().Init(this, NodeBounds[i]); + if ( node.AddItem(bounds, content, out item, node_pool, item_pool) ) { + return true; } } } @@ -111,8 +108,9 @@ namespace IsoTools.Internal { public void VisitAllBounds(IBoundsLookUpper look_upper) { look_upper.LookUp(SelfBounds); for ( int i = 0, e = Nodes.Length; i < e; ++i ) { - if ( Nodes[i] != null ) { - Nodes[i].VisitAllBounds(look_upper); + var node = Nodes[i]; + if ( node != null ) { + node.VisitAllBounds(look_upper); } } } @@ -164,19 +162,6 @@ namespace IsoTools.Internal { return this; } - void TryMoveItemsToNode(Node node) { - for ( int i = 0; i < Items.Count; ) { - var item = Items[i]; - if ( node.SelfBounds.Contains(item.Bounds) ) { - Items.Remove(item); - node.Items.Add(item); - item.Owner = node; - } else { - ++i; - } - } - } - void ClearNodes(IsoIPool node_pool, IsoIPool item_pool) { for ( int i = 0, e = Nodes.Length; i < e; ++i ) { var node = Nodes[i];