Esempio n. 1
0
        //Render
        private void DoRender()
        {
            //Set Lists
            ElementRender.Models = Elements.Where(e => e.IsHidden == false).Cast <Model>().ToList();
            TextRender.Models    = Texts.Where(e => e.IsHidden == false).Cast <Model>().ToList();

            //Camera (Render GUI Element and Text)
            Camera.Render();

            //GUI Element RenderStep Effect
            foreach (RenderStep rs in ElementsFX)
            {
                rs.Render();
            }

            //Text RenderStep Effect
            foreach (RenderStep rs in TextsFX)
            {
                rs.Render();
            }

            //Mix Text and GUIElement
            if (ElementsFX.Count > 0)
            {
                MixRender.First = ElementsFX.Last();
            }
            if (TextsFX.Count > 0)
            {
                MixRender.Second = TextsFX.Last();
            }
            MixRender.Render();

            //Final Render (Reverse X)
            Render.Render();
        }
Esempio n. 2
0
        /// <summary>
        /// Graphic User Interface Actor
        /// </summary>
        public GUI()
        {
            //Init Cameras and Z Index
            ZIndex = ZIndexStart + AutoZStep;
            Camera = new Camera()
            {
                Type = Camera.CameraType.Orthographic, Near = AutoZStep, Far = -ZIndexStart, IfEmptyRenderAll = false
            };
            TextRender = new Camera(false)
            {
                IfEmptyRenderAll = false
            };
            ElementRender = new Camera(false)
            {
                IfEmptyRenderAll = false
            };

            //Duplicate Camera
            Camera.Duplicates.Add(ElementRender);
            Camera.Duplicates.Add(TextRender);

            //Lists
            Elements = new List <GUIElement>();
            Texts    = new List <Text>();

            //Mix Render
            MixRender = new MixRender(ElementRender, TextRender, MixRender.MixOperation.B_on_A);

            //Reverse Render (Final Render Step)
            Render = new ReverseRender(MixRender, ReverseRender.ReverseOperation.X);

            //Renderstep Effect List
            ElementsFX = new List <RenderStep>();
            TextsFX    = new List <RenderStep>();

            //Init Shader
            Shader fontShader = new Shader();

            fontShader.LoadPrefab(Engine.Core.Prefab_Shader_Font);
            TextRender.AddShader(fontShader, m => !m.IsHidden && m.MultiShader_StrVal == GUI.Default_Text);

            Shader elemShader = new Shader();

            elemShader.LoadPrefab(Engine.Core.Prefab_Shader_Gui);
            ElementRender.AddShader(elemShader, m => !m.IsHidden && m.MultiShader_StrVal == GUI.Default_Element);

            //Hover text from GUIElement
            HoverTextFrom = null;
        }