Add material workspace

This commit is contained in:
luboslenco
2020-04-06 22:00:00 +02:00
parent 8c9ec7b150
commit 9cecc64a7a
18 changed files with 57 additions and 64 deletions
+1 -1
View File
@@ -329,7 +329,7 @@ class Context {
public static function selectObject(o: Object) {
object = o;
if (UIHeader.inst.worktab.position == SpaceScene) {
if (UIHeader.inst.worktab.position == SpaceRender) {
if (Std.is(o, MeshObject)) {
for (i in 0...Project.materialsScene.length) {
if (Project.materialsScene[i].data == cast(o, MeshObject).materials[0]) {
+3 -1
View File
@@ -24,7 +24,9 @@ package arm;
@:enum abstract SpaceType(Int) from Int to Int {
var SpacePaint = 0;
var SpaceScene = 1;
// var SpaceSculpt = 0;
var SpaceMaterial = 1;
// var SpaceBake = 0;
var SpaceRender = 2;
}
+1 -1
View File
@@ -67,7 +67,7 @@ class ImportFolder {
}
// Create material
var isScene = UIHeader.inst.worktab.position == SpaceScene;
var isScene = UIHeader.inst.worktab.position == SpaceRender;
if (isScene) {
MaterialUtil.removeMaterialCache();
Data.getMaterial("Scene", "Material2", function(md: MaterialData) {
+2 -2
View File
@@ -93,7 +93,7 @@ class ImportMesh {
}
var raw: TMeshData = null;
if (UIHeader.inst.worktab.position == SpaceScene) {
if (UIHeader.inst.worktab.position == SpaceRender) {
raw = rawMesh(mesh);
if (mesh.texa != null) raw.vertex_arrays.push({ values: mesh.texa, attrib: "tex", data: "short2norm" });
}
@@ -107,7 +107,7 @@ class ImportMesh {
new MeshData(raw, function(md: MeshData) {
// Append
if (UIHeader.inst.worktab.position == SpaceScene) {
if (UIHeader.inst.worktab.position == SpaceRender) {
var mats = new haxe.ds.Vector(1);
mats[0] = Context.materialScene.data;
var object = Scene.active.addMeshObject(md, mats, Scene.active.getChild("Scene"));
+1 -1
View File
@@ -13,7 +13,7 @@ class MakeMeshPreview {
public static var opacityDiscardScene = 0.5;
public static function run(data: MaterialShaderData, matcon: TMaterialContext): MaterialShaderContext {
var isScene = UIHeader.inst.worktab.position == SpaceScene;
var isScene = UIHeader.inst.worktab.position == SpaceRender;
var context_id = "mesh";
var con_mesh: MaterialShaderContext = data.add_context({
name: context_id,
+4 -4
View File
@@ -19,7 +19,7 @@ class MaterialParser {
}
public static function parseMeshMaterial() {
if (UIHeader.inst.worktab.position == SpaceScene) return;
if (UIHeader.inst.worktab.position == SpaceRender) return;
var m = Project.materials[0].data;
var scon: ShaderContext = null;
for (c in m.shader.contexts) if (c.raw.name == "mesh") { scon = c; break; }
@@ -63,7 +63,7 @@ class MaterialParser {
public static function parseMeshPreviewMaterial() {
if (!getMOut()) return;
var m = UIHeader.inst.worktab.position == SpaceScene ? Context.materialScene.data : Project.materials[0].data;
var m = UIHeader.inst.worktab.position == SpaceRender ? Context.materialScene.data : Project.materials[0].data;
var scon: ShaderContext = null;
for (c in m.shader.contexts) if (c.raw.name == "mesh") { scon = c; break; }
m.shader.raw.contexts.remove(scon.raw);
@@ -92,7 +92,7 @@ class MaterialParser {
m.shader.raw.contexts.push(scon.raw);
m.shader.contexts.push(scon);
if (UIHeader.inst.worktab.position == SpaceScene) {
if (UIHeader.inst.worktab.position == SpaceRender) {
makeVoxel(m);
}
}
@@ -114,7 +114,7 @@ class MaterialParser {
public static function parsePaintMaterial() {
if (!getMOut()) return;
if (UIHeader.inst.worktab.position == SpaceScene) {
if (UIHeader.inst.worktab.position == SpaceRender) {
parseMeshPreviewMaterial();
return;
}
+1 -1
View File
@@ -2168,7 +2168,7 @@ class NodesMaterial {
for (c in list) {
for (n in c) {
if (n.type == nodeType) {
var isScene = arm.ui.UIHeader.inst.worktab.position == SpaceScene;
var isScene = arm.ui.UIHeader.inst.worktab.position == SpaceRender;
var material = isScene ? Context.materialScene : Context.material;
var canvas = material.canvas;
var nodes = material.nodes;
+1 -1
View File
@@ -186,7 +186,7 @@ class Inc {
}
}
if (Context.ddirty <= 0 && Context.rdirty <= 0 && (Context.pdirty <= 0 || UIHeader.inst.worktab.position == SpaceScene)) {
if (Context.ddirty <= 0 && Context.rdirty <= 0 && (Context.pdirty <= 0 || UIHeader.inst.worktab.position == SpaceRender)) {
if (mx != lastX || my != lastY || mouse.locked) Context.ddirty = 0;
if (Context.ddirty > -2) {
path.setTarget("");
+2 -2
View File
@@ -97,7 +97,7 @@ class RenderPathPaint {
public static function commandsPaint() {
var tid = Context.layer.id;
if (Context.pdirty > 0 && UIHeader.inst.worktab.position != SpaceScene) {
if (Context.pdirty > 0 && UIHeader.inst.worktab.position != SpaceRender) {
if (Context.tool == ToolParticle) {
path.setTarget("texparticle");
path.clearTarget(0x00000000);
@@ -357,7 +357,7 @@ class RenderPathPaint {
tool != ToolParticle) {
return;
}
if (!App.uiEnabled || UIHeader.inst.worktab.position == SpaceScene) {
if (!App.uiEnabled || UIHeader.inst.worktab.position == SpaceRender) {
return;
}
+1 -1
View File
@@ -118,7 +118,7 @@ class RenderPathPreview {
#end
var framebuffer = "texpreview";
var selectedMat = UIHeader.inst.worktab.position == SpaceScene ? Context.materialScene : Context.material;
var selectedMat = UIHeader.inst.worktab.position == SpaceRender ? Context.materialScene : Context.material;
RenderPath.active.renderTargets.get("texpreview").image = selectedMat.image;
RenderPath.active.renderTargets.get("texpreview_icon").image = selectedMat.imageIcon;
+2 -2
View File
@@ -21,7 +21,7 @@ class TabMaterials {
public static function draw() {
var ui = UISidebar.inst.ui;
var isScene = UIHeader.inst.worktab.position == SpaceScene;
var isScene = UIHeader.inst.worktab.position == SpaceRender;
var materials = isScene ? Project.materialsScene : Project.materials;
var selectMaterial = isScene ? Context.selectMaterialScene : Context.selectMaterial;
@@ -212,6 +212,6 @@ class TabMaterials {
}
static function getSelectedMaterial():MaterialSlot {
return UIHeader.inst.worktab.position == SpaceScene ? Context.materialScene : Context.material;
return UIHeader.inst.worktab.position == SpaceRender ? Context.materialScene : Context.material;
}
}
+7 -5
View File
@@ -115,11 +115,13 @@ class TabTextures {
Project.assetMap.remove(asset.id);
Project.assets.splice(i, 1);
Project.assetNames.splice(i, 1);
iron.system.Tween.timer(0.1, function() {
arm.node.MaterialParser.parsePaintMaterial();
arm.util.RenderUtil.makeMaterialPreview();
UISidebar.inst.hwnd1.redraws = 2;
});
function _parse(g: kha.graphics4.Graphics) {
arm.node.MaterialParser.parsePaintMaterial();
arm.util.RenderUtil.makeMaterialPreview();
UISidebar.inst.hwnd1.redraws = 2;
iron.App.removeRender(_parse);
}
iron.App.notifyOnRender(_parse);
}
}, 4);
}
+2 -5
View File
@@ -58,11 +58,8 @@ class UIMenubar {
var panelx = (iron.App.x() - UIToolbar.inst.toolbarw) + menubarw;
if (ui.window(workspaceHandle, panelx, 0, System.windowWidth() - UISidebar.inst.windowW - menubarw, Std.int(UIHeader.defaultHeaderH * ui.SCALE()))) {
ui.tab(UIHeader.inst.worktab, tr("Paint"));
// ui.tab(UIHeader.inst.worktab, "Sculpt");
ui.tab(UIHeader.inst.worktab, tr("Scene"));
#if arm_creator
ui.tab(UIHeader.inst.worktab, tr("Material"));
ui.tab(UIHeader.inst.worktab, tr("Render"));
#end
if (UIHeader.inst.worktab.changed) {
Context.ddirty = 2;
UIToolbar.inst.toolbarHandle.redraws = 2;
@@ -71,7 +68,7 @@ class UIMenubar {
UISidebar.inst.hwnd1.redraws = 2;
UISidebar.inst.hwnd2.redraws = 2;
if (UIHeader.inst.worktab.position == SpaceScene) {
if (UIHeader.inst.worktab.position == SpaceRender) {
Context.selectTool(ToolGizmo);
}
+2 -2
View File
@@ -87,12 +87,12 @@ class UINodes {
}
public function getCanvasMaterial(): TNodeCanvas {
var isScene = UIHeader.inst.worktab.position == SpaceScene;
var isScene = UIHeader.inst.worktab.position == SpaceRender;
return isScene ? Context.materialScene.canvas : Context.material.canvas;
}
public function getNodes(): Nodes {
var isScene = UIHeader.inst.worktab.position == SpaceScene;
var isScene = UIHeader.inst.worktab.position == SpaceRender;
if (canvasType == CanvasMaterial) return isScene ? Context.materialScene.nodes : Context.material.nodes;
else return Context.brush.nodes;
}
+22 -30
View File
@@ -645,7 +645,7 @@ class UISidebar {
if (undoPressed) History.undo();
else if (redoPressed) History.redo();
if (UIHeader.inst.worktab.position == SpaceScene) {
if (UIHeader.inst.worktab.position == SpaceRender) {
arm.plugin.Gizmo.update();
}
@@ -676,43 +676,35 @@ class UISidebar {
}
Context.gizmo.visible = false;
if (UIHeader.inst.worktab.position == SpacePaint) {
if (ui.window(hwnd, tabx, 0, windowW, tabh)) {
TabLayers.draw();
TabHistory.draw();
TabPlugins.draw();
}
if (ui.window(hwnd1, tabx, tabh, windowW, tabh1)) {
Context.object = Context.paintObject;
TabMaterials.draw();
TabBrushes.draw();
TabParticles.draw();
}
if (ui.window(hwnd2, tabx, tabh + tabh1, windowW, tabh2)) {
TabTextures.draw();
TabMeshes.draw();
TabFonts.draw();
if (ui.window(hwnd, tabx, 0, windowW, tabh)) {
TabLayers.draw();
TabHistory.draw();
TabPlugins.draw();
if (UIHeader.inst.worktab.position == SpaceRender) {
TabOutliner.draw();
}
}
else if (UIHeader.inst.worktab.position == SpaceScene) {
Context.gizmo.visible = true;
if (ui.window(hwnd, tabx, 0, windowW, tabh)) {
TabOutliner.draw();
TabPlugins.draw();
}
if (ui.window(hwnd1, tabx, tabh, windowW, tabh1)) {
TabMaterials.draw();
if (ui.window(hwnd1, tabx, tabh, windowW, tabh1)) {
Context.object = Context.paintObject;
TabMaterials.draw();
TabBrushes.draw();
TabParticles.draw();
if (UIHeader.inst.worktab.position == SpaceRender) {
TabProperties.draw();
#if arm_creator
TabTraits.draw();
#end
}
if (ui.window(hwnd2, tabx, tabh + tabh1, windowW, tabh2)) {
TabTextures.draw();
TabMeshes.draw();
TabFonts.draw();
}
}
if (ui.window(hwnd2, tabx, tabh + tabh1, windowW, tabh2)) {
TabTextures.draw();
TabMeshes.draw();
TabFonts.draw();
}
Context.gizmo.visible = UIHeader.inst.worktab.position == SpaceRender;
ui.end();
g.begin(false);
+1 -1
View File
@@ -65,7 +65,7 @@ class UIToolbar {
ui._y += 2;
}
}
else if (UIHeader.inst.worktab.position == SpaceScene) {
else if (UIHeader.inst.worktab.position == SpaceRender) {
var img = Res.get("icons.k");
var imgw = ui.SCALE() > 1 ? 100 : 50;
ui._x += 2;
+3 -3
View File
@@ -76,7 +76,7 @@ class MeshUtil {
}
public static function swapAxis(a: Int, b: Int) {
var objects = UIHeader.inst.worktab.position == SpaceScene ? [cast(Context.object, MeshObject)] : Project.paintObjects;
var objects = UIHeader.inst.worktab.position == SpaceRender ? [cast(Context.object, MeshObject)] : Project.paintObjects;
for (o in objects) {
// Remapping vertices, backle up
// 0 - x, 1 - y, 2 - z
@@ -126,7 +126,7 @@ class MeshUtil {
}
public static function flipNormals() {
var objects = UIHeader.inst.worktab.position == SpaceScene ? [cast(Context.object, MeshObject)] : Project.paintObjects;
var objects = UIHeader.inst.worktab.position == SpaceRender ? [cast(Context.object, MeshObject)] : Project.paintObjects;
for (o in objects) {
var g = o.data.geom;
var vertices = g.vertexBuffer.lockInt16(); // posnortex
@@ -149,7 +149,7 @@ class MeshUtil {
var vc = new Vec4();
var cb = new Vec4();
var ab = new Vec4();
var objects = UIHeader.inst.worktab.position == SpaceScene ? [cast(Context.object, MeshObject)] : Project.paintObjects;
var objects = UIHeader.inst.worktab.position == SpaceRender ? [cast(Context.object, MeshObject)] : Project.paintObjects;
for (o in objects) {
var g = o.data.geom;
var inda = g.indices[0];
+1 -1
View File
@@ -33,7 +33,7 @@ class RenderUtil {
var painto = Context.paintObject;
Context.paintObject = sphere;
if (UIHeader.inst.worktab.position == SpaceScene) {
if (UIHeader.inst.worktab.position == SpaceRender) {
sphere.materials[0] = Context.materialScene.data;
Context.materialScene.previewReady = true;
}