예제 #1
0
        private void SubmitResourcesWindow()
        {
            if (!showResources)
            {
                return;
            }
            ImGui.PushStyleVar(ImGuiStyleVar.WindowRounding, 0);
            Vector2 size         = RuntimeOptions.Current.GetScaledSize(RESOURCESWINDOWWIDTH, RESOURCESWINDOWHEIGHT);
            float   quarterWidth = size.X / 4;

            ImGui.SetNextWindowSize(size);
            if (ImGui.Begin("Resources", ref showResources, ImGuiWindowFlags.NoResize))
            {
                if (ImGui.Button("Add resource", new Vector2(size.X - 16, 30 * RuntimeOptions.Current.UiScale)))
                {
                    Controller.LoadResource();
                }
                ImGui.PushFont(RuntimeOptions.Current.EditorFont);
                if (ImGui.BeginChild("Resource list", Vector2.Zero, false))
                {
                    for (int i = 0; i < Controller.Context.ImguiTextures.Count; i++)
                    {
                        YALCTShaderResource resource = Controller.Context.ImguiTextures[i];
                        if (ImGui.BeginChild($"resprops_{resource.UID}", new Vector2(0, quarterWidth), false))
                        {
                            ImGui.Image(resource.ImguiBinding, new Vector2(quarterWidth, quarterWidth));
                            if (ImGui.IsItemHovered())
                            {
                                ImGui.GetStyle().Alpha = 1;
                                ImGui.BeginTooltip();
                                float scaler = resource.Size.X > resource.Size.Y ?
                                               resource.Size.X / MAXTEXPREVIEWSIZE : resource.Size.Y / MAXTEXPREVIEWSIZE;
                                ImGui.Image(resource.ImguiBinding, resource.Size / scaler);
                                ImGui.EndTooltip();
                                ImGui.GetStyle().Alpha = RuntimeOptions.Current.UiAlpha;
                            }
                            ImGui.SameLine(quarterWidth + 5);
                            if (ImGui.BeginChild($"resdata_{resource.UID}", new Vector2(0, quarterWidth), false))
                            {
                                ImGui.Text($"InputTex{i}");
                                ImGui.Text($"{resource.Size.X}x{resource.Size.Y}");
                                if (ImGui.Button("Remove"))
                                {
                                    Controller.Context.RemoveTexture(resource);
                                    return;
                                }
                                ImGui.EndChild();
                            }
                            ImGui.EndChild();
                        }
                    }
                    ImGui.EndChild();
                }
                ImGui.PopFont();
            }
            ImGui.PopStyleVar();
        }
예제 #2
0
        public void RemoveTexture(YALCTShaderResource resource)
        {
            int resourceIndex = imguiTextures.IndexOf(resource);

            if (resourceIndex != -1)
            {
                imguiTextureViews[resourceIndex].Dispose();
                textureViews[resourceIndex].Dispose();
                textures[resourceIndex].Dispose();

                imguiTextures.RemoveAt(resourceIndex);
                imguiTextureViews.RemoveAt(resourceIndex);
                textureViews.RemoveAt(resourceIndex);
                textures.RemoveAt(resourceIndex);
            }
        }