//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(); }
/// <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; }