public void ReInitializeDots() { //final sweep of children while (transform.childCount > 0) { #if UNITY_EDITOR GameObject.DestroyImmediate(transform.GetChild(transform.childCount - 1).gameObject); #else GameObject.Destroy(transform.GetChild(transform.childCount - 1).gameObject); #endif } m_Lines.Clear(); m_ActivatedDotStack.Clear(); //initialize all dots. m_Dots = new List <NorseDot>();// new NorseDot[dotsWidth, dotsHeight]; for (int y = 0; y < dotsHeight; y++) { for (int x = 0; x < dotsWidth; x++) { NorseDot iter = Instantiate(PrefabManager.Instance.m_Data.m_NorseDot.gameObject, transform).GetComponent <NorseDot>(); //iter.m_SprDot.sprite = UIManager.Instance.m_Data.m_InactiveDot; //should be unnecessary, this should be set in the prefab iter.name = "dot (" + x.ToString() + " ," + y.ToString() + ")"; iter.transform.localPosition = new Vector3((x * m_DotSpacingScale), (y * m_DotSpacingScale) + (x % 2 == 1 ? (.5f * m_DotSpacingScale) : 0f), 0); iter.m_GridPositionX = x; iter.m_GridPositionY = y; iter.AOnActivate = OnDotActivate; iter.AOnDeactivate = OnDotDeactivate; iter.m_SprDot.color = m_DotsColor; iter.transform.localScale = new Vector3(m_DotScale, m_DotScale, m_DotScale); //m_Dots[x][y] = iter; m_Dots.Add(iter); } } }
private void OnDotDeactivate(NorseDot dot) { while (m_ActivatedDotStack.Count > 0) { NorseDot iterPop = m_ActivatedDotStack[m_ActivatedDotStack.Count - 1]; m_ActivatedDotStack.RemoveAt(m_ActivatedDotStack.Count - 1); iterPop.IsActivated = false; if (m_Lines.Count > 0) { m_Lines[m_Lines.Count - 1].CleanUp(); m_Lines.RemoveAt(m_Lines.Count - 1); } NorseLine l = m_Lines.Find( item => ((item.A.m_GridPositionX == iterPop.m_GridPositionX && item.A.m_GridPositionY == iterPop.m_GridPositionY) || (item.B.m_GridPositionX == iterPop.m_GridPositionX && item.B.m_GridPositionY == iterPop.m_GridPositionY))); iterPop.IsActivated = l != null; if (iterPop == dot) { return; } } }