public static SustainedCanvasView FindSustainedCanvasParent(ISustainedElement p_element) { SustainedCanvasView v_canvasView = null; if (!p_element.IsDestroyed()) { if (p_element is SustainedCanvasView) { v_canvasView = ((SustainedCanvasView)p_element); if (v_canvasView.transform.parent != null) { v_canvasView = v_canvasView.transform.parent.GetComponentInParent <SustainedCanvasView>(); } else { v_canvasView = null; } } else if (p_element is Component) { v_canvasView = (p_element as Component).GetComponentInParent <SustainedCanvasView>(); } } return(v_canvasView); }
protected virtual Canvas FindRootCanvasParent() { _rootParent = GetComponentInParent <Canvas>(); //Renew Sustained canvas parent based in Canvas var v_newSustainedParent = _rootParent != null?_rootParent.GetComponentInParent <SustainedCanvasView>() : null; //Unregister self from the old SustainedCanvas Parent if (_sustainedCanvasParent != null && v_newSustainedParent != _sustainedCanvasParent) { SustainedCanvasView.UnregisterDynamicElement(this); } //Register self to a new SustainedCanvas _sustainedCanvasParent = v_newSustainedParent; if (_sustainedCanvasParent != null && enabled && gameObject.activeInHierarchy) { SustainedCanvasView.RegisterDynamicElement(this); } if (_rootParent != null) { _rootParent = _rootParent.rootCanvas; } return(_rootParent); }
public static void UnregisterDynamicElement(ISustainedElement p_element) { SustainedCanvasView v_canvasView = FindSustainedCanvasParent(p_element); if (v_canvasView != null) { v_canvasView._sustainedChildrenElements.Remove(p_element); v_canvasView.MarkDynamicElementDirty(); } }
public static void RegisterDynamicElement(ISustainedElement p_element) { SustainedCanvasView v_canvasView = FindSustainedCanvasParent(p_element); if (v_canvasView != null) { if (!v_canvasView._sustainedChildrenElements.Contains(p_element)) { v_canvasView._sustainedChildrenElements.Add(p_element); v_canvasView.MarkDynamicElementDirty(); } } }
protected override void OnDisable() { SustainedCanvasView.UnregisterDynamicElement(this); base.OnDisable(); }
protected virtual void OnBeforeTransformParentChanged() { SustainedCanvasView.UnregisterDynamicElement(this); UnregisterEvents(); }