protected void OnGUI() { if (!Application.isPlaying) { EditorGUILayout.HelpBox("only runtime", MessageType.Warning); return; } switch (m_QuadtreeType) { case QuadtreeType.Notset: if (GUILayout.Button("Food")) { m_QuadtreeType = QuadtreeType.Food; m_FoodEnumerator = new QuadtreeGizmosEnumerator <slFood>(slQuadtreeGizmos.FoodQuadtree); } else if (GUILayout.Button("Snake")) { m_QuadtreeType = QuadtreeType.Snake; m_SnakeEnumerator = new QuadtreeGizmosEnumerator <slSnake.QuadtreeElement>(slQuadtreeGizmos.SnakeQuadtree); } break; case QuadtreeType.Food: OnGUIQuadtree(m_FoodEnumerator); break; case QuadtreeType.Snake: OnGUIQuadtree(m_SnakeEnumerator); break; } }
private void OnGUIQuadtree <T>(QuadtreeGizmosEnumerator <T> enumerator) where T : hwmQuadtree <T> .IElement { if (GUILayout.Button("Back")) { if (enumerator != null) { enumerator.Dispose(); } m_QuadtreeType = QuadtreeType.Notset; } if (enumerator == null) { EditorGUILayout.HelpBox("not have quadtree", MessageType.Warning); return; } if (m_QuadtreeGizmos == null) { GameObject go = new GameObject("Quadtree Gizmos"); m_QuadtreeGizmos = go.AddComponent <slQuadtreeGizmos>(); m_QuadtreeGizmos.OnBehaviourDrawGizmos += OnDrawGizmos; } enumerator.OnGUI(); }
protected void OnDisable() { if (m_QuadtreeGizmos != null) { m_QuadtreeGizmos.OnBehaviourDrawGizmos -= OnDrawGizmos; DestroyImmediate(m_QuadtreeGizmos.gameObject); } switch (m_QuadtreeType) { case QuadtreeType.Food: m_FoodEnumerator.Dispose(); m_FoodEnumerator = null; break; case QuadtreeType.Snake: m_SnakeEnumerator.Dispose(); m_SnakeEnumerator = null; break; } }