Add material workspace
This commit is contained in:
@@ -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]) {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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"));
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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("");
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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];
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user