mirror of
https://github.com/sampletext32/ParkanPlayground.git
synced 2025-06-19 16:08:02 +03:00
texture viewer
This commit is contained in:
@ -1,16 +1,20 @@
|
||||
using ImGuiNET;
|
||||
using System.Numerics;
|
||||
using ImGuiNET;
|
||||
using NResUI.Abstractions;
|
||||
using NResUI.Models;
|
||||
using Silk.NET.OpenGL;
|
||||
|
||||
namespace NResUI.ImGuiUI;
|
||||
|
||||
public class TexmExplorer : IImGuiPanel
|
||||
{
|
||||
private readonly TexmExplorerViewModel _viewModel;
|
||||
private readonly GL _openGl;
|
||||
|
||||
public TexmExplorer(TexmExplorerViewModel viewModel)
|
||||
public TexmExplorer(TexmExplorerViewModel viewModel, GL openGl)
|
||||
{
|
||||
_viewModel = viewModel;
|
||||
_openGl = openGl;
|
||||
}
|
||||
|
||||
public void OnImGuiRender()
|
||||
@ -49,7 +53,7 @@ public class TexmExplorer : IImGuiPanel
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(_viewModel.TexmFile.Header.Stride.ToString());
|
||||
|
||||
ImGui.Text("Magic1: ");
|
||||
ImGui.Text("Magic1 (possibly ddsCaps): ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(_viewModel.TexmFile.Header.Magic1.ToString());
|
||||
|
||||
@ -64,6 +68,45 @@ public class TexmExplorer : IImGuiPanel
|
||||
ImGui.Text("IsIndexed: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(_viewModel.TexmFile.IsIndexed.ToString());
|
||||
|
||||
ImGui.Checkbox("Включить чёрный фон", ref _viewModel.IsBlackBgEnabled);
|
||||
ImGui.Checkbox("Включить белый фон", ref _viewModel.IsWhiteBgEnabled);
|
||||
|
||||
if (_viewModel.IsWhiteBgEnabled && _viewModel.IsBlackBgEnabled)
|
||||
{
|
||||
_viewModel.IsBlackBgEnabled = false;
|
||||
_viewModel.IsWhiteBgEnabled = false;
|
||||
}
|
||||
|
||||
_viewModel.GenerateGlTextures(_openGl);
|
||||
|
||||
var drawList = ImGui.GetWindowDrawList();
|
||||
for (var index = 0; index < _viewModel.GlTextures.Count; index++)
|
||||
{
|
||||
var glTexture = _viewModel.GlTextures[index];
|
||||
var screenPos = ImGui.GetCursorScreenPos();
|
||||
if (_viewModel.IsBlackBgEnabled)
|
||||
{
|
||||
drawList.AddRectFilled(screenPos, screenPos + new Vector2(glTexture.Width, glTexture.Height), 0xFF000000);
|
||||
}
|
||||
else if (_viewModel.IsWhiteBgEnabled)
|
||||
{
|
||||
drawList.AddRectFilled(screenPos, screenPos + new Vector2(glTexture.Width, glTexture.Height), 0xFFFFFFFF);
|
||||
}
|
||||
|
||||
ImGui.Image((IntPtr) glTexture.GlTexture, new Vector2(glTexture.Width, glTexture.Height));
|
||||
ImGui.SameLine();
|
||||
|
||||
if (ImGui.IsItemHovered())
|
||||
{
|
||||
var mousePos = ImGui.GetMousePos();
|
||||
var relativePos = mousePos - screenPos;
|
||||
|
||||
ImGui.Text("Hovering over: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(relativePos.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user