public void Reset() { curvedControllerCache.Clear(); CachedCanvas = null; cachedCanvasIsRootCanvas = false; cachedController = null; hasCachedData = false; }
private IEnumerator WaitForCanvas() { yield return(new WaitWhile(() => canvas == null)); curvedHelper.Reset(); controller = curvedHelper.GetCurvedUIController(canvas); controller.CurveSettingsChangedEvent += Controller_CurveSettingsChangedEvent; OnTransformParentChanged(); UpdateCurvature(); }
private void Start() { cachedMesh = CreateNewMesh(); controller = helper.GetCurvedUIController(graphic.canvas); if (controller != null) { controller.CurveSettingsChangedEvent -= Controller_CurveSettingsChangedEvent; controller.CurveSettingsChangedEvent += Controller_CurveSettingsChangedEvent; } UpdateCurvature(); }
public CurvedUIController GetCurvedUIController(Canvas canvas) { if (canvas == null) { return(null); } Canvas rootCanvas; if (hasCachedData) { if (!canvas.transform.hasChanged) { return(cachedController); } if (!cachedCanvasIsRootCanvas && CachedCanvas == canvas) { return(cachedController); } rootCanvas = canvas.rootCanvas; if (cachedCanvasIsRootCanvas && CachedCanvas == rootCanvas) { return(cachedController); } } cachedController = GetCurvedControllerForCanvas(canvas); if (cachedController != null) { CachedCanvas = canvas; cachedCanvasIsRootCanvas = false; cachedCanvasSize = (CachedCanvas.transform as RectTransform).rect.size; hasCachedData = true; return(cachedController); } rootCanvas = canvas.rootCanvas; cachedController = GetCurvedControllerForCanvas(rootCanvas); cachedCanvasIsRootCanvas = true; CachedCanvas = rootCanvas; cachedCanvasSize = (rootCanvas.transform as RectTransform).rect.size; hasCachedData = true; return(cachedController); }