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();
        }
示例#3
0
        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);
        }