/// <summary> /// Returns whether the sprite is already managed by this /// manager. /// </summary> /// <param name="sprite">Sprite for which to look.</param> /// <returns>True when the sprite is already being managed by this manager.</returns> public bool AlreadyAdded(SpriteRoot sprite) { if(activeBlocks.Rewind()) { do { if (activeBlocks.Current.sprite == sprite) return true; } while (activeBlocks.MoveNext()); } return false; }
public void RemoveChild(GameObject go) { IUIObject obj = (IUIObject)go.GetComponent("IUIObject"); if (obj != null) { if (uiObjs.Rewind()) { do { if (uiObjs.Current.val == obj) { uiObjs.Remove(uiObjs.Current); break; } } while (uiObjs.MoveNext()); } if (obj.Container == (IUIContainer)this) { obj.Container = null; } } else { UIPanelBase panel = (UIPanelBase)go.GetComponent(typeof(UIPanelBase)); if (panel != null) { if (childPanels.Rewind()) { do { if (childPanels.Current.val == panel) { childPanels.Remove(childPanels.Current); break; } } while (childPanels.MoveNext()); } if (panel.Container == (IUIContainer)this) { panel.Container = null; } } } RemoveSubject(go); }
// Sets up the subjects of our transitions: protected virtual void SetupTransitionSubjects() { GameObject go; int hash; // Only register the callback for the BringIn/Dismiss transitions: for (int i = 0; i < 4; ++i) { Transitions.list[i].AddTransitionEndDelegate(TransitionCompleted); } if (uiObjs.Rewind()) { do { go = ((Component)uiObjs.Current.val).gameObject; hash = go.GetHashCode(); for (int i = 0; i < Transitions.list.Length; ++i) { Transitions.list[i].AddSubSubject(go); } if (!subjects.ContainsKey(hash)) { subjects.Add(hash, go); } } while (uiObjs.MoveNext()); } // Now find any sprites, since that's a common object type // we'll want to transition: Component[] sprites = transform.GetComponentsInChildren(typeof(SpriteRoot), true); for (int i = 0; i < sprites.Length; ++i) { // Don't add ourselves as we are the main subject: if (sprites[i].gameObject == gameObject) { continue; } go = sprites[i].gameObject; hash = go.GetHashCode(); // Only add new objects: if (subjects.ContainsKey(hash)) { continue; } for (int j = 0; j < Transitions.list.Length; ++j) { Transitions.list[j].AddSubSubject(go); } subjects.Add(hash, go); } // Now find any SpriteText, since that's another common object type // we'll want to transition: Component[] texts = transform.GetComponentsInChildren(typeof(SpriteText), true); for (int i = 0; i < texts.Length; ++i) { // Don't add ourselves as we are the main subject: if (texts[i].gameObject == gameObject) { continue; } go = texts[i].gameObject; hash = go.GetHashCode(); // Only add new objects: if (subjects.ContainsKey(hash)) { continue; } for (int j = 0; j < Transitions.list.Length; ++j) { Transitions.list[j].AddSubSubject(go); } subjects.Add(hash, go); } // Now find any other renderables: Component[] renderers = transform.GetComponentsInChildren(typeof(Renderer), true); for (int i = 0; i < renderers.Length; ++i) { // Don't add ourselves as we are the main subject: if (renderers[i].gameObject == gameObject) { continue; } go = renderers[i].gameObject; hash = go.GetHashCode(); // Only add new objects: if (subjects.ContainsKey(hash)) { continue; } for (int j = 0; j < Transitions.list.Length; ++j) { Transitions.list[j].AddSubSubject(go); } subjects.Add(hash, go); } // Add our children IUIObjects to the list, and then // see if we have any additional GameObjects to add: /* * Dictionary<int, GameObject> objs = new Dictionary<int, GameObject>(); * if (uiObjs.Rewind()) * { * do * { * go = ((Component)uiObjs.Current.val).gameObject; * objs.Add(go.GetHashCode(), go); * } while (uiObjs.MoveNext()); * } * * // Add first-tier children if they aren't the same * // as our IUIObjects: * foreach (Transform child in transform) * { * go = child.gameObject; * int hash = go.GetHashCode(); * if (objs.ContainsKey(hash)) * continue; * objs.Add(hash, go); * } * * // Now add all of these as subjects: * for(int i=0; i<applyToChildren.Length; ++i) * { * if (!applyToChildren[i]) * continue; * * Dictionary<int, GameObject>.ValueCollection coll = objs.Values; * * foreach(GameObject g in coll) * { * Transitions.list[i].AddSubSubject(g); * } * } */ }