Exemplo n.º 1
0
    private void OnFontChanged()
    {
        Func <UnityEngine.Object, bool> func  = null;
        Func <dfControl, int>           func1 = null;

        try
        {
            if (!this.invalidatingDependentControls)
            {
                dfGUIManager.RenderCallback renderCallback = null;
                renderCallback = (dfGUIManager manager) => {
                    dfGUIManager.AfterRender          -= renderCallback;
                    this.invalidatingDependentControls = true;
                    try
                    {
                        !this.wasFontAtlasRebuilt;
                        UnityEngine.Object[] objArray = UnityEngine.Object.FindObjectsOfType(typeof(dfControl));
                        if (func == null)
                        {
                            func = (UnityEngine.Object x) => x is IDFMultiRender;
                        }
                        IEnumerable <dfControl> dfControls = ((IEnumerable <UnityEngine.Object>)objArray).Where <UnityEngine.Object>(func).Cast <dfControl>();
                        if (func1 == null)
                        {
                            func1 = (dfControl x) => x.RenderOrder;
                        }
                        List <dfControl> list = dfControls.OrderBy <dfControl, int>(func1).ToList <dfControl>();
                        for (int i = 0; i < list.Count; i++)
                        {
                            list[i].Invalidate();
                        }
                        if (this.wasFontAtlasRebuilt)
                        {
                            manager.Render();
                        }
                    }
                    finally
                    {
                        this.wasFontAtlasRebuilt           = false;
                        this.invalidatingDependentControls = false;
                    }
                };
                dfGUIManager.AfterRender += renderCallback;
            }
        }
        finally
        {
        }
    }
Exemplo n.º 2
0
    private void OnFontChanged()
    {
        if (invalidatingDependentControls)
        {
            return;
        }

        dfGUIManager.RenderCallback callback = null;

        callback = (unused) =>
        {
            dfGUIManager.AfterRender     -= callback;
            invalidatingDependentControls = true;

            try
            {
                var guiManagers = new List <dfGUIManager>(dfGUIManager.ActiveManagers);
                guiManagers.Sort((x, y) => x.RenderQueueBase.CompareTo(y.RenderQueueBase));

                foreach (var manager in guiManagers)
                {
                    // All controls that render dynamic font text will use the
                    // IDFMultiRender interface. Find all IDFMultiRender controls
                    // and invalidate them to ensure that they get rendered on
                    // the next pass with the new dynamic font atlas
                    var renderedControls = manager.ControlsRendered;
                    for (int i = 0; i < renderedControls.Count; i++)
                    {
                        if (renderedControls[i] is IDFMultiRender)
                        {
                            renderedControls[i].Invalidate();
                        }
                    }

                    manager.Render();
                }
            }
            finally
            {
                invalidatingDependentControls = false;
            }
        };

        dfGUIManager.AfterRender += callback;
    }