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); }
void ImportTexture() { string path; if ((path = FileDialog.Open()) != null) { var src = TextureImport.OpenFile(path); if (src.Type == TexLoadType.ErrorLoad || src.Type == TexLoadType.ErrorNonSquare || src.Type == TexLoadType.ErrorNonPowerOfTwo) { main.ErrorDialog(TextureImport.LoadErrorString(src.Type, path)); } else if (src.Type == TexLoadType.DDS) { src.Texture.Dispose(); selectedNode.Children = null; selectedNode.Data = File.ReadAllBytes(path); } else { teximportprev = src.Texture; teximportpath = path; teximportid = ImGuiHelper.RegisterTexture(teximportprev); popups.OpenPopup("Texture Import"); } } }
protected override void Load() { Title = "LancerEdit"; guiHelper = new ImGuiHelper(this); Audio = new AudioManager(this); FileDialog.RegisterParent(this); }
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; }
protected override void Load() { Title = "LancerEdit"; guiHelper = new ImGuiHelper(this); Audio = new AudioManager(this); FileDialog.RegisterParent(this); Viewport = new ViewportManager(RenderState); var texturefilters = new List <string>(defaultFilters); if (RenderState.MaxAnisotropy > 0) { anisotropyLevels = RenderState.GetAnisotropyLevels(); foreach (var lvl in anisotropyLevels) { texturefilters.Add(string.Format("Anisotropic {0}x", lvl)); } } filters = texturefilters.ToArray(); Resources = new ResourceManager(this); Commands = new CommandBuffer(); Billboards = new Billboards(); Polyline = new PolylineRender(Commands); DebugRender = new PhysicsDebugRenderer(); Viewport.Push(0, 0, 800, 600); }
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 TextureViewer(string title, Texture2D tex, bool disposeTex = true) { this.tex = tex; this.tid = ImGuiHelper.RegisterTexture(tex); Title = title; dispose = disposeTex; }
void ImportTexture() { string path; if ((path = FileDialog.Open()) != null) { bool isDDS; using (var stream = File.OpenRead(path)) { isDDS = LibreLancer.ImageLib.DDS.StreamIsDDS(stream); } if (isDDS) { selectedNode.Children = null; selectedNode.Data = File.ReadAllBytes(path); } else { try { teximportprev = LibreLancer.ImageLib.Generic.FromFile(path); teximportpath = path; teximportid = ImGuiHelper.RegisterTexture(teximportprev); popups.OpenPopup("Texture Import"); } catch (Exception) { ErrorPopup("Could not open file as image"); } } } }
public override void Dispose() { if (renderTarget != null) { ImGuiHelper.DeregisterTexture(renderTarget); renderTarget.Dispose(); } }
public void Dispose() { if (RenderTarget != null) { ImGuiHelper.DeregisterTexture(RenderTarget.Texture); RenderTarget.Dispose(); } }
public override void Dispose() { if (dispose) { tex.Dispose(); } ImGuiHelper.DeregisterTexture(tex); }
public TextureViewer(string title, Texture2D tex, TexFrameAnimation anim, bool disposeTex = true) { this.tex = tex; this.tid = ImGuiHelper.RegisterTexture(tex); Title = title; dispose = disposeTex; this.anim = anim; }
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(); }
protected override void Load() { Title = "LancerEdit"; guiHelper = new ImGuiHelper(this); Audio = new AudioManager(this); FileDialog.RegisterParent(this); Viewport = new ViewportManager(RenderState); Resources = new ResourceManager(this); Viewport.Push(0, 0, 800, 600); }
public OptionsWindow(MainWindow win) { config = win.Config; rstate = win.RenderState; guiHelper = win.guiHelper; vps = win.Viewport; var texturefilters = new List <string>(defaultFilters); if (win.RenderState.MaxAnisotropy > 0) { anisotropyLevels = win.RenderState.GetAnisotropyLevels(); foreach (var lvl in anisotropyLevels) { texturefilters.Add(string.Format("Anisotropic {0}x", lvl)); } } var msaa = new List <int> { 0 }; int a = 2; while (a <= win.RenderState.MaxSamples) { msaa.Add(a); a *= 2; } msaaLevels = msaa.ToArray(); switch (config.MSAA) { case 2: cMsaa = 1; break; case 4: cMsaa = 2; break; case 8: cMsaa = 3; break; case 16: cMsaa = 4; break; case 32: cMsaa = 5; break; } filters = texturefilters.ToArray(); cFilter = config.TextureFilter; SetTexFilter(); }
public static bool GradientButton(string id, Color4 colA, Color4 colB, Vector2 size, ViewportManager vps, bool gradient) { if (!gradient) { return(ImGui.ColorButton(id, colA, ImGuiColorEditFlags.NoAlpha, size)); } ImGui.PushID(id); var img = ImGuiHelper.RenderGradient(vps, colA, colB); var retval = ImGui.ImageButton((IntPtr)img, size, new Vector2(0, 1), new Vector2(0, 0), 0); ImGui.PopID(); return(retval); }
protected override void Load() { Title = "LancerEdit"; guiHelper = new ImGuiHelper(this); Audio = new AudioManager(this); FileDialog.RegisterParent(this); Viewport = new ViewportManager(RenderState); Resources = new ResourceManager(this); Commands = new CommandBuffer(); Billboards = new Billboards(); Polyline = new PolylineRender(Commands); DebugRender = new PhysicsDebugRenderer(); Viewport.Push(0, 0, 800, 600); }
public void End(bool view = true) { rstate.PopViewport(); rstate.RenderTarget = null; if (mw.Config.MSAA != 0) { msaa.BlitToRenderTarget(RenderTarget); } rstate.ClearColor = cc; rstate.DepthEnabled = false; rstate.BlendMode = BlendMode.Normal; rstate.Cull = false; //Viewport Control if (view) { ImGuiHelper.DisableAlpha(); ImGui.Dummy(Vector2.One); ImGui.SameLine(); ImGui.ImageButton((IntPtr)rid, new Vector2(rw, rh), new Vector2(0, 1), new Vector2(1, 0), 0, Color4.Black, Color4.White); ImGuiHelper.EnableAlpha(); if (Mode == CameraModes.Cockpit) { ModelRotation = Vector2.Zero; } if (Mode == CameraModes.Arcball) { ArcballUpdate(); } if (ImGui.IsItemHovered(ImGuiHoveredFlags.None)) { switch (Mode) { case CameraModes.Walkthrough: WalkthroughControls(); break; case CameraModes.Starsphere: StarsphereControls(); break; case CameraModes.Arcball: ArcballControls(); break; } } } }
public static unsafe void Apply() { var s = ImGui.GetStyle(); //Settings s.FrameRounding = 2; s.ScrollbarSize = 12; s.ScrollbarRounding = 3; s.NativePtr->FrameBorderSize = 1f; //Colours s.SetColor(ColorTarget.WindowBg, RGBA(21, 21, 22, 128)); s.SetColor(ColorTarget.Border, RGBA(83, 83, 83, 255)); s.SetColor(ColorTarget.FrameBg, RGBA(56, 57, 58, 255)); s.SetColor(ColorTarget.PopupBg, RGBA(56, 57, 58, 255)); s.SetColor(ColorTarget.FrameBgHovered, RGBA(66, 133, 190, 255)); s.SetColor(ColorTarget.Header, RGBA(88, 178, 255, 132)); s.SetColor(ColorTarget.HeaderActive, RGBA(88, 178, 255, 164)); s.SetColor(ColorTarget.FrameBgActive, RGBA(95, 97, 98, 255)); s.SetColor(ColorTarget.MenuBarBg, RGBA(66, 67, 69, 255)); s.SetColor(ColorTarget.ScrollbarBg, RGBA(51, 64, 77, 153)); s.SetColor(ColorTarget.Button, RGBA(128, 128, 128, 88)); using (var stream = typeof(Theme).Assembly.GetManifestResourceStream("LancerEdit.UILib.icons.png")) { iconTexture = Generic.FromStream(stream); iconId = ImGuiHelper.RegisterTexture(iconTexture); } using (var reader = new StreamReader(typeof(Theme).Assembly.GetManifestResourceStream("LancerEdit.UILib.icons.txt"))) { while (!reader.EndOfStream) { var ln = reader.ReadLine().Trim(); if (string.IsNullOrEmpty(ln)) { continue; } var sp = ln.Split('='); var n = sp[0].Trim(); var vals = sp[1].Trim().Split(' ').Select(float.Parse).ToArray(); var uv0 = new Vector2(vals[0] / iconTexture.Width, 1 - (vals[1] / iconTexture.Height)); var uv1 = new Vector2((vals[0] + vals[2]) / iconTexture.Width, 1 - (vals[1] + vals[3]) / iconTexture.Height); icons.Add(n, new TCoordinates() { UV0 = uv0, UV1 = uv1, Size = new Vector2(vals[2], vals[3]) }); } } }
protected override void Load() { Title = "LancerEdit"; guiHelper = new ImGuiHelper(this); Audio = new AudioManager(this); FileDialog.RegisterParent(this); Viewport = new ViewportManager(RenderState); var texturefilters = new List <string>(defaultFilters); if (RenderState.MaxAnisotropy > 0) { anisotropyLevels = RenderState.GetAnisotropyLevels(); foreach (var lvl in anisotropyLevels) { texturefilters.Add(string.Format("Anisotropic {0}x", lvl)); } } filters = texturefilters.ToArray(); Resources = new ResourceManager(this); Commands = new CommandBuffer(); Billboards = new Billboards(); Polyline = new PolylineRender(Commands); DebugRender = new PhysicsDebugRenderer(); Viewport.Push(0, 0, 800, 600); Keyboard.KeyDown += Keyboard_KeyDown; //TODO: Icon-setting code very messy int w, h, c; var stream = typeof(MainWindow).Assembly.GetManifestResourceStream("LancerEdit.reactor_64.png"); var bytes = new byte[stream.Length]; stream.Read(bytes, 0, (int)stream.Length); StbSharp.Stb.stbi_set_flip_vertically_on_load(0); var img = StbSharp.Stb.stbi_load_from_memory(bytes, out w, out h, out c, StbSharp.Stb.STBI_rgb_alpha); StbSharp.Stb.stbi_set_flip_vertically_on_load(1); SetWindowIcon(w, h, img); //Open passed in files! if (InitOpenFile != null) { foreach (var f in InitOpenFile) { OpenFile(f); } } }
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)); }
protected override void Load() { Title = "LancerEdit"; guiHelper = new ImGuiHelper(this); guiHelper.PauseWhenUnfocused = Config.PauseWhenUnfocused; Audio = new AudioManager(this); FileDialog.RegisterParent(this); Viewport = new ViewportManager(RenderState); InitOptions(); Resources = new GameResourceManager(this); Commands = new CommandBuffer(); Billboards = new Billboards(); Polyline = new PolylineRender(Commands); DebugRender = new PhysicsDebugRenderer(); Viewport.Push(0, 0, 800, 600); Keyboard.KeyDown += Keyboard_KeyDown; //TODO: Icon-setting code very messy int w, h, c; var stream = typeof(MainWindow).Assembly.GetManifestResourceStream("LancerEdit.reactor_64.png"); var bytes = new byte[stream.Length]; stream.Read(bytes, 0, (int)stream.Length); StbSharp.Stb.stbi_set_flip_vertically_on_load(0); var img = StbSharp.Stb.stbi_load_from_memory(bytes, out w, out h, out c, StbSharp.Stb.STBI_rgb_alpha); StbSharp.Stb.stbi_set_flip_vertically_on_load(1); SetWindowIcon(w, h, img); //Open passed in files! if (InitOpenFile != null) { foreach (var f in InitOpenFile) { OpenFile(f); } } Renderer2D = new Renderer2D(RenderState); RichText = Renderer2D.CreateRichTextEngine(); Services.Add(Renderer2D); Fonts = new FontManager(this); Fonts.ConstructDefaultFonts(); Services.Add(Fonts); }
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) }
protected override void Load() { DefaultMaterialMap.Init(); Title = "LancerEdit"; guiHelper = new ImGuiHelper(this, DpiScale * Config.UiScale); guiHelper.PauseWhenUnfocused = Config.PauseWhenUnfocused; Audio = new AudioManager(this); FileDialog.RegisterParent(this); options = new OptionsWindow(this); Resources = new GameResourceManager(this); Commands = new CommandBuffer(); Polyline = new PolylineRender(Commands); DebugRender = new PhysicsDebugRenderer(); RenderContext.PushViewport(0, 0, 800, 600); Keyboard.KeyDown += Keyboard_KeyDown; //TODO: Icon-setting code very messy using (var stream = typeof(MainWindow).Assembly.GetManifestResourceStream("LancerEdit.reactor_64.png")) { var icon = LibreLancer.ImageLib.Generic.BytesFromStream(stream); SetWindowIcon(icon.Width, icon.Height, icon.Data); } using (var stream = typeof(MainWindow).Assembly.GetManifestResourceStream("LancerEdit.reactor_128.png")) { var icon = (Texture2D)LibreLancer.ImageLib.Generic.FromStream(stream); logoTexture = ImGuiHelper.RegisterTexture(icon); } //Open passed in files! if (InitOpenFile != null) { foreach (var f in InitOpenFile) { OpenFile(f); } } RichText = RenderContext.Renderer2D.CreateRichTextEngine(); Fonts = new FontManager(); Fonts.ConstructDefaultFonts(); Services.Add(Fonts); Make3dbDlg = new CommodityIconDialog(this); LoadScripts(); }
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); }
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 bool Draw() { ImGui.SetNextWindowSize(new Vector2(500, 400), ImGuiCond.FirstUseEver); if (ImGui.Begin($"Script##{unique}", ref isOpen)) { if (doUpdate) { ImGuiHelper.AnimatingElement(); //Stops sleeping when running task on background thread } ImGui.Text(script.Info.Name); ImGui.Separator(); if (running) { if (doUpdate) { string text = "Running."; var t = main.TotalTime - Math.Truncate(main.TotalTime); if (t > 0.66) { text += ".."; } else if (t > 0.33) { text += "."; } ImGui.Text(text); } else { ImGui.Text("Finished"); } ImGui.BeginChild($"##SCRIPTlog{unique}"); ImGui.PushFont(ImGuiHelper.SystemMonospace); foreach (var line in lines) { ImGui.TextWrapped(line); } if (lines.Count != lastCount && ImGui.GetScrollY() >= ImGui.GetScrollMaxY()) { ImGui.SetScrollHereY(1.0f); } lastCount = lines.Count; ImGui.PopFont(); ImGui.EndChild(); } else { for (int i = 0; i < arguments.Count; i++) { arguments[i].Draw(i); } ImGui.Separator(); if (ImGui.Button("Run")) { Invoke(); } } ImGui.End(); } return(isOpen); }