Shortcut for viewport mode

This commit is contained in:
MathemanFlo
2022-04-19 11:02:06 +02:00
parent 2181f1fc40
commit f17dba8ecf
3 changed files with 66 additions and 19 deletions
+22
View File
@@ -288,6 +288,28 @@ class Context {
setMaterial(Project.materials[i]);
}
public static function setViewportMode(mode : ViewportMode) {
if (mode == viewportMode) return;
viewportMode = mode;
var deferred = Context.renderMode != RenderForward && (Context.viewportMode == ViewLit || Context.viewportMode == ViewPathTrace);
if (deferred) {
RenderPath.active.commands = RenderPathDeferred.commands;
}
// else if (Context.viewportMode == ViewPathTrace) {
// }
else {
if (RenderPathForward.path == null) {
RenderPathForward.init(RenderPath.active);
}
RenderPath.active.commands = RenderPathForward.commands;
}
var _workspace = UIHeader.inst.worktab.position;
UIHeader.inst.worktab.position = SpacePaint;
MakeMaterial.parseMeshMaterial();
UIHeader.inst.worktab.position = _workspace;
}
public static function setMaterial(m: MaterialSlot) {
if (Project.materials.indexOf(m) == -1) return;
material = m;
+1 -19
View File
@@ -270,25 +270,7 @@ class UIMenu {
ui.radio(modeHandle, i, modes[i]);
}
Context.viewportMode = modeHandle.position;
if (modeHandle.changed) {
var deferred = Context.renderMode != RenderForward && (Context.viewportMode == ViewLit || Context.viewportMode == ViewPathTrace);
if (deferred) {
RenderPath.active.commands = RenderPathDeferred.commands;
}
// else if (Context.viewportMode == ViewPathTrace) {
// }
else {
if (RenderPathForward.path == null) {
RenderPathForward.init(RenderPath.active);
}
RenderPath.active.commands = RenderPathForward.commands;
}
var _workspace = UIHeader.inst.worktab.position;
UIHeader.inst.worktab.position = SpacePaint;
MakeMaterial.parseMeshMaterial();
UIHeader.inst.worktab.position = _workspace;
}
if (modeHandle.changed) Context.setViewportMode(modeHandle.position);
}
else if (menuCategory == MenuCamera) {
if (menuButton(ui, tr("Reset"), Config.keymap.view_reset)) {
+43
View File
@@ -3,6 +3,7 @@ package arm.ui;
import haxe.io.Bytes;
import kha.Image;
import kha.System;
import kha.input.KeyCode;
import zui.Zui;
import zui.Id;
import iron.data.Data;
@@ -364,6 +365,48 @@ class UISidebar {
else if (Operator.shortcut(Config.keymap.view_orbit_opposite)) Viewport.orbitOpposite();
else if (Operator.shortcut(Config.keymap.view_zoom_in, ShortcutRepeat)) Viewport.zoom(0.2);
else if (Operator.shortcut(Config.keymap.view_zoom_out, ShortcutRepeat)) Viewport.zoom(-0.2);
else if (Operator.shortcut("ctrl+m")) {
UIMenu.draw(function(ui: Zui) {
var modeHandle = Id.handle();
modeHandle.position = Context.viewportMode;
ui.text(tr("Viewport mode"), Right, ui.t.HIGHLIGHT_COL);
var modes = [
tr("Lit"),
tr("Base Color"),
tr("Normal"),
tr("Occlusion"),
tr("Roughness"),
tr("Metallic"),
tr("Opacity"),
tr("Height"),
tr("TexCoord"),
tr("Object Normal"),
tr("Material ID"),
tr("Object ID"),
tr("Mask")
];
var shortcuts = [ "l", "b", "n", "o", "r", "m", "a", "h", "t", "1", "2", "3", "4" ];
#if (kha_direct3d12 || kha_vulkan)
modes.push(tr("Path Traced"));
shortcuts.push("p");
#end
for (i in 0...modes.length) {
ui.radio(modeHandle, i, modes[i], shortcuts[i]);
}
var index = shortcuts.indexOf(Keyboard.keyCode(ui.key));
if (ui.isKeyPressed && index != -1) {
modeHandle.position = index;
ui.changed = true;
Context.setViewportMode(modeHandle.position);
}
else if (modeHandle.changed) {
Context.setViewportMode(modeHandle.position);
ui.changed = true;
}
}, 14 #if (kha_direct3d12 || kha_vulkan) + 1 #end );
}
}
}