public override bool Draw() { if (ImGuiExt.BeginDock(Title + "##" + Unique, ref open, 0)) { var renderWidth = Math.Max(120, (int)ImGui.GetWindowWidth() - 5); var renderHeight = Math.Max(120, (int)ImGui.GetWindowHeight() - 40); //Generate render target if (rh != renderHeight || rw != renderWidth) { if (renderTarget != null) { ImGuiHelper.DeregisterTexture(renderTarget); renderTarget.Dispose(); } renderTarget = new RenderTarget2D(renderWidth, renderHeight); rid = ImGuiHelper.RegisterTexture(renderTarget); rw = renderWidth; rh = renderHeight; } DrawGL(renderWidth, renderHeight); //Draw Image ImGui.Image((IntPtr)rid, new Vector2(renderWidth, renderHeight), Vector2.Zero, Vector2.One, Vector4.One, Vector4.One); } ImGuiExt.EndDock(); return(open); }
public void Open(string filename, string icoName = null, bool tmp = false) { iconName = icoName ?? Path.GetFileNameWithoutExtension(filename); texFilename = filename; error = false; if (teximportprev != null) { ImGuiHelper.DeregisterTexture(teximportprev); teximportprev.Dispose(); teximportprev = null; } var src = TextureImport.OpenFile(filename); loadType = src.Type; teximportprev = src.Texture; if (loadType == TexLoadType.ErrorLoad || loadType == TexLoadType.ErrorNonSquare || loadType == TexLoadType.ErrorNonPowerOfTwo) { win.ErrorDialog(TextureImport.LoadErrorString(loadType, filename)); return; } teximportid = ImGuiHelper.RegisterTexture(teximportprev); doOpen = true; this.tmp = tmp; }
public void Begin(int fixWidth = -1, int fixHeight = -1) { var renderWidth = Math.Max(120, (int)ImGui.GetWindowWidth() - MarginW); var renderHeight = Math.Max(120, (int)ImGui.GetWindowHeight() - MarginH); if (fixWidth > 0) { renderWidth = fixWidth; } if (fixHeight > 0) { renderHeight = fixHeight; } //Generate render target if (rh != renderHeight || rw != renderWidth) { if (RenderTarget != null) { ImGuiHelper.DeregisterTexture(RenderTarget); RenderTarget.Dispose(); } RenderTarget = new RenderTarget2D(renderWidth, renderHeight); rid = ImGuiHelper.RegisterTexture(RenderTarget); rw = renderWidth; rh = renderHeight; } cc = rstate.ClearColor; RenderTarget.BindFramebuffer(); vps.Push(0, 0, rw, rh); rstate.Cull = true; rstate.DepthEnabled = true; rstate.ClearColor = Background; rstate.ClearAll(); }
public override void Dispose() { if (dispose) { tex.Dispose(); } ImGuiHelper.DeregisterTexture(tex); }
public void Dispose() { if (RenderTarget != null) { ImGuiHelper.DeregisterTexture(RenderTarget.Texture); RenderTarget.Dispose(); } }
public override void Dispose() { if (renderTarget != null) { ImGuiHelper.DeregisterTexture(renderTarget); renderTarget.Dispose(); } }
public void Begin(int fixWidth = -1, int fixHeight = -1) { ImGuiHelper.AnimatingElement(); var renderWidth = Math.Max(120, (int)ImGui.GetWindowWidth() - MarginW); var renderHeight = Math.Max(120, (int)ImGui.GetWindowHeight() - MarginH); if (fixWidth > 0) { renderWidth = fixWidth; } if (fixHeight > 0) { renderHeight = fixHeight; } //Generate render target if (rh != renderHeight || rw != renderWidth) { if (RenderTarget != null) { ImGuiHelper.DeregisterTexture(RenderTarget.Texture); RenderTarget.Dispose(); } RenderTarget = new RenderTarget2D(renderWidth, renderHeight); rid = ImGuiHelper.RegisterTexture(RenderTarget.Texture); rw = renderWidth; rh = renderHeight; } if (mw.Config.MSAA != 0 && ((mrw != rw) || (mrh != rh) || (msamples != mw.Config.MSAA))) { if (msaa != null) { msaa.Dispose(); } msaa = new MultisampleTarget(rw, rh, mw.Config.MSAA); } else if (msaa != null) { msaa.Dispose(); mrw = mrh = -1; msamples = 0; msaa = null; } cc = rstate.ClearColor; if (mw.Config.MSAA != 0) { rstate.RenderTarget = msaa; } else { rstate.RenderTarget = RenderTarget; } vps.Push(0, 0, rw, rh); rstate.Cull = true; rstate.DepthEnabled = true; rstate.ClearColor = Background; rstate.ClearAll(); }
void DoViewport() { var renderWidth = Math.Max(120, (int)ImGui.GetWindowWidth() - 15); var renderHeight = Math.Max(120, (int)ImGui.GetWindowHeight() - 40); //Generate render target if (rh != renderHeight || rw != renderWidth) { if (renderTarget != null) { ImGuiHelper.DeregisterTexture(renderTarget); renderTarget.Dispose(); } renderTarget = new RenderTarget2D(renderWidth, renderHeight); rid = ImGuiHelper.RegisterTexture(renderTarget); rw = renderWidth; rh = renderHeight; } DrawGL(renderWidth, renderHeight); ImGui.ImageButton((IntPtr)rid, new Vector2(renderWidth, renderHeight), Vector2.Zero, Vector2.One, 0, Vector4.One, Vector4.One); if (ImGui.IsItemHovered(HoveredFlags.Default)) { if (ImGui.IsMouseDragging(0, 1f)) { var delta = (Vector2)ImGui.GetMouseDragDelta(0, 1f); rotation -= (delta / 64); ImGui.ResetMouseDragDelta(0); } float wheel = ImGui.GetIO().MouseWheel; if (ImGui.GetIO().ShiftPressed) { zoom -= wheel * 10; } else { zoom -= wheel * 40; } if (zoom < 0) { zoom = 0; } } }
public void Draw(float width) { icard.Recalculate(width); if (icard.Height < 1 || width < 1) { ImGui.Dummy(new Vector2(1, 1)); return; } if (icard.Height != renderHeight || (int)width != renderWidth) { renderWidth = (int)width; renderHeight = (int)icard.Height; if (renderTarget != null) { ImGuiHelper.DeregisterTexture(renderTarget.Texture); renderTarget.Dispose(); } renderTarget = new RenderTarget2D(renderWidth, renderHeight); rid = ImGuiHelper.RegisterTexture(renderTarget.Texture); } window.RenderContext.RenderTarget = renderTarget; window.RenderContext.PushViewport(0, 0, renderWidth, renderHeight); var cc = window.RenderContext.ClearColor; window.RenderContext.ClearColor = Color4.Transparent; window.RenderContext.ClearAll(); window.RenderContext.ClearColor = cc; window.RichText.RenderText(icard, 0, 0); window.RenderContext.RenderTarget = null; window.RenderContext.PopViewport(); var cPos = (Vector2)ImGui.GetCursorPos(); var wPos = (Vector2)ImGui.GetWindowPos(); var scrPos = -ImGui.GetScrollY(); var mOffset = cPos + wPos + new Vector2(0, scrPos); var drawList = ImGui.GetWindowDrawList(); drawList.AddImage((IntPtr)rid, new Vector2((int)mOffset.X, (int)mOffset.Y), new Vector2((int)(mOffset.X + renderWidth), (int)(mOffset.Y + icard.Height)), new Vector2(0, 1), new Vector2(1, 0)); ImGui.InvisibleButton("##infocardbutton", new System.Numerics.Vector2(renderWidth, icard.Height)); }
public override bool Draw() { if (ImGuiExt.BeginDock(Title + "###" + Unique, ref open, 0)) { ImGui.Text("View Mode:"); ImGui.SameLine(); ImGui.Combo("##modes", ref viewMode, viewModes); ImGui.SameLine(); ImGui.Checkbox("Wireframe", ref doWireframe); var renderWidth = Math.Max(120, (int)ImGui.GetWindowWidth() - 15); var renderHeight = Math.Max(120, (int)ImGui.GetWindowHeight() - 70); //Generate render target if (rh != renderHeight || rw != renderWidth) { if (renderTarget != null) { ImGuiHelper.DeregisterTexture(renderTarget); renderTarget.Dispose(); } renderTarget = new RenderTarget2D(renderWidth, renderHeight); rid = ImGuiHelper.RegisterTexture(renderTarget); rw = renderWidth; rh = renderHeight; } DrawGL(renderWidth, renderHeight); //Draw Image //ImGui.Image((IntPtr)rid, new Vector2(renderWidth, renderHeight), Vector2.Zero, Vector2.One, Vector4.One, Vector4.One); ImGui.ImageButton((IntPtr)rid, new Vector2(renderWidth, renderHeight), Vector2.Zero, Vector2.One, 0, Vector4.One, Vector4.One); if (ImGui.IsItemHovered(HoveredFlags.Default)) { if (ImGui.IsMouseDragging(0, 1f)) { var delta = (Vector2)ImGui.GetMouseDragDelta(0, 1f); rotation -= (delta / 64); ImGui.ResetMouseDragDelta(0); } } } ImGuiExt.EndDock(); return(open); }
public void Draw(float width) { icard.Recalculate(width); if (icard.Height != renderHeight || (int)width != renderWidth) { renderWidth = (int)width; renderHeight = (int)icard.Height; if (renderTarget != null) { ImGuiHelper.DeregisterTexture(renderTarget); renderTarget.Dispose(); } renderTarget = new RenderTarget2D(renderWidth, renderHeight); rid = ImGuiHelper.RegisterTexture(renderTarget); } renderTarget.BindFramebuffer(); window.Viewport.Push(0, 0, renderWidth, renderHeight); var cc = window.RenderState.ClearColor; window.RenderState.ClearColor = Color4.Transparent; window.RenderState.ClearAll(); window.RenderState.ClearColor = cc; window.Renderer2D.Start(renderWidth, renderHeight); window.RichText.RenderText(icard, 0, 0); window.Renderer2D.Finish(); RenderTarget2D.ClearBinding(); window.Viewport.Pop(); //ImGui. Base off ImageButton so we can get input for selection later var style = ImGui.GetStyle(); var btn = style.Colors[(int)ImGuiCol.Button]; ImGui.PushStyleColor(ImGuiCol.ButtonHovered, btn); ImGui.PushStyleColor(ImGuiCol.ButtonActive, btn); ImGui.ImageButton((IntPtr)rid, new Vector2(renderWidth, icard.Height), new Vector2(0, 1), new Vector2(1, 0), 0, Vector4.Zero, Vector4.One); ImGui.PopStyleColor(); ImGui.PopStyleColor(); //Somehow keep track of selection? (idk if InfocardDisplay should do this) }
void TexImportDialog(PopupData data) { if (teximportprev == null) { //processing ImGui.Text("Processing..."); if (!texImportWaiting) { if (texImportChildren != null) { selectedNode.Data = null; foreach (var c in texImportChildren) { c.Parent = selectedNode; } selectedNode.Children = texImportChildren; } else { selectedNode.Children = null; selectedNode.Data = texImportData; } texImportData = null; texImportChildren = null; ImGui.CloseCurrentPopup(); } } else { ImGui.Image((IntPtr)teximportid, new Vector2(64, 64), new Vector2(0, 1), new Vector2(1, 0), Vector4.One, Vector4.Zero); ImGui.Text(string.Format("Dimensions: {0}x{1}", teximportprev.Width, teximportprev.Height)); ImGui.Combo("Format", ref compressOption, texOptions); ImGui.Combo("Mipmaps", ref mipmapOption, mipmapOptions); ImGui.Checkbox("High Quality (slow)", ref compressSlow); if (ImGui.Button("Import")) { ImGuiHelper.DeregisterTexture(teximportprev); teximportprev.Dispose(); teximportprev = null; texImportWaiting = true; new System.Threading.Thread(() => { var format = DDSFormat.Uncompressed; switch (compressOption) { case 1: format = DDSFormat.DXT1; break; case 2: format = DDSFormat.DXT1a; break; case 3: format = DDSFormat.DXT3; break; case 4: format = DDSFormat.DXT5; break; } var mipm = MipmapMethod.None; switch (mipmapOption) { case 1: mipm = MipmapMethod.Box; break; case 2: mipm = MipmapMethod.Bicubic; break; case 3: mipm = MipmapMethod.Bilinear; break; case 4: mipm = MipmapMethod.Bspline; break; case 5: mipm = MipmapMethod.CatmullRom; break; case 6: mipm = MipmapMethod.Lanczos3; break; } if (mipm == MipmapMethod.None && format == DDSFormat.Uncompressed) { texImportData = TextureImport.TGANoMipmap(teximportpath); } else if (format == DDSFormat.Uncompressed) { texImportChildren = TextureImport.TGAMipmaps(teximportpath, mipm); } else { texImportData = TextureImport.CreateDDS(teximportpath, format, mipm, compressSlow); } texImportWaiting = false; }).Start(); } ImGui.SameLine(); if (ImGui.Button("Cancel")) { ImGuiHelper.DeregisterTexture(teximportprev); teximportprev.Dispose(); teximportprev = null; ImGui.CloseCurrentPopup(); } } }
public override bool Draw() { //Fx management lastEffect = currentEffect; ImGui.Text("Effect:"); ImGui.SameLine(); ImGui.Combo("##effect", ref currentEffect, effectNames); if (currentEffect != lastEffect) { SetupRender(currentEffect); } ImGui.SameLine(); ImGui.Button("+"); ImGui.SameLine(); ImGui.Button("-"); ImGui.Separator(); //Layout ImGui.Columns(2, "##alecolumns", true); ImGui.Text("Viewport"); ImGui.NextColumn(); ImGui.Text("Hierachy"); ImGui.Separator(); ImGui.NextColumn(); ImGui.BeginChild("##renderchild"); //Viewport Rendering var renderWidth = Math.Max(120, (int)ImGui.GetWindowWidth() - 15); var renderHeight = Math.Max(120, (int)ImGui.GetWindowHeight() - 70); //Generate render target if (rh != renderHeight || rw != renderWidth) { if (renderTarget != null) { ImGuiHelper.DeregisterTexture(renderTarget); renderTarget.Dispose(); } renderTarget = new RenderTarget2D(renderWidth, renderHeight); rid = ImGuiHelper.RegisterTexture(renderTarget); rw = renderWidth; rh = renderHeight; } DrawGL(renderWidth, renderHeight); //Display + Camera controls ImGui.ImageButton((IntPtr)rid, new Vector2(renderWidth, renderHeight), Vector2.Zero, Vector2.One, 0, Vector4.One, Vector4.One); if (ImGui.IsItemHovered(HoveredFlags.Default)) { if (ImGui.IsMouseDragging(0, 1f)) { var delta = (Vector2)ImGui.GetMouseDragDelta(0, 1f); rotation -= (delta / 64); ImGui.ResetMouseDragDelta(0); } float wheel = ImGui.GetIO().MouseWheel; if (ImGui.GetIO().ShiftPressed) { zoom -= wheel * 10; } else { zoom -= wheel * 40; } } //Action Bar if (ImGui.Button("Actions")) { ImGui.OpenPopup("actions"); } if (ImGui.BeginPopup("actions")) { if (ImGui.MenuItem("Open Node Library")) { } ImGui.EndPopup(); } ImGui.SameLine(); if (ImGui.Button("Reset")) { instance.Reset(); } ImGui.SameLine(); ImGui.Text(string.Format("T: {0:0.000}", instance.GlobalTime)); //Node Hierachy Tab ImGui.EndChild(); ImGui.NextColumn(); ImGui.BeginChild("##nodesdisplay", false); if (selectedReference != null) { NodeOptions(); ImGui.Separator(); } ImGui.BeginChild("##nodescroll", false); NodeHierachy(); ImGui.EndChild(); ImGui.EndChild(); return(open); }