diff --git a/Libraries/shaderlib/Sources/arm/shader/NodesMaterial.hx b/Libraries/shaderlib/Sources/arm/shader/NodesMaterial.hx index 4ac86792..73450ed3 100644 --- a/Libraries/shaderlib/Sources/arm/shader/NodesMaterial.hx +++ b/Libraries/shaderlib/Sources/arm/shader/NodesMaterial.hx @@ -2504,10 +2504,8 @@ class NodesMaterial { for (c in list) { for (n in c) { if (n.type == nodeType) { - var isScene = arm.ui.UIHeader.inst.worktab.position == SpaceRender; - var material = isScene ? Context.materialScene : Context.material; - var canvas = material.canvas; - var nodes = material.nodes; + var canvas = Context.material.canvas; + var nodes = Context.material.nodes; var node = arm.ui.UINodes.makeNode(n, nodes, canvas); canvas.nodes.push(node); return node; diff --git a/Sources/arm/Context.hx b/Sources/arm/Context.hx index c9351385..154acc1d 100644 --- a/Sources/arm/Context.hx +++ b/Sources/arm/Context.hx @@ -32,13 +32,11 @@ import arm.ProjectFormat; class Context { public static var material: MaterialSlot; - public static var materialScene: MaterialSlot; public static var layer: LayerSlot; public static var layerIsMask = false; // Mask selected for active layer public static var brush: BrushSlot; public static var font: FontSlot; public static var texture: TAsset = null; - public static var object: Object; public static var paintObject: MeshObject; public static var mergedObject: MeshObject = null; // For object mask public static var tool = 0; @@ -262,17 +260,6 @@ class Context { public static var cameraControls = ControlsOrbit; public static var dragDestination = 0; - public static function selectMaterialScene(i: Int) { - if (Project.materialsScene.length <= i || object == paintObject) return; - materialScene = Project.materialsScene[i]; - if (Std.is(object, MeshObject)) { - var mats = cast(object, MeshObject).materials; - for (i in 0...mats.length) mats[i] = materialScene.data; - } - MakeMaterial.parsePaintMaterial(); - UISidebar.inst.hwnd0.redraws = 2; - } - public static function selectMaterial(i: Int) { if (Project.materials.length <= i) return; setMaterial(Project.materials[i]); @@ -367,23 +354,6 @@ class Context { } } - public static function selectObject(o: Object) { - object = o; - - 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]) { - // selectMaterial(i); // loop - materialScene = Project.materialsScene[i]; - UISidebar.inst.hwnd0.redraws = 2; - break; - } - } - } - } - } - public static function selectPaintObject(o: MeshObject) { UIHeader.inst.headerHandle.redraws = 2; for (p in Project.paintObjects) p.skip_context = "paint"; diff --git a/Sources/arm/Enums.hx b/Sources/arm/Enums.hx index 11942008..40c1f89c 100644 --- a/Sources/arm/Enums.hx +++ b/Sources/arm/Enums.hx @@ -20,7 +20,6 @@ package arm; // var SpaceSculpt = 0; var SpaceMaterial = 1; var SpaceBake = 2; - var SpaceRender = 3; } @:enum abstract DilateType(Int) from Int to Int { diff --git a/Sources/arm/History.hx b/Sources/arm/History.hx index f87677d0..6790d3df 100644 --- a/Sources/arm/History.hx +++ b/Sources/arm/History.hx @@ -428,7 +428,7 @@ class History { redos = 0; } - var opos = Project.paintObjects.indexOf(cast Context.object); + var opos = Project.paintObjects.indexOf(Context.paintObject); var lpos = Project.layers.indexOf(Context.layer); var mpos = Project.materials.indexOf(Context.material); var bpos = Project.brushes.indexOf(Context.brush); diff --git a/Sources/arm/Project.hx b/Sources/arm/Project.hx index 631cf450..e91e48c2 100644 --- a/Sources/arm/Project.hx +++ b/Sources/arm/Project.hx @@ -43,7 +43,6 @@ class Project { public static var assetId = 0; public static var meshAssets: Array = []; public static var materials: Array = null; - public static var materialsScene: Array = null; public static var materialGroups: Array = []; public static var brushes: Array = null; public static var layers: Array = null; @@ -393,8 +392,7 @@ class Project { if (ui.button(tr("Import")) || ui.isReturnDown) { UIBox.show = false; App.redrawUI(); - var replaceExisting = UIHeader.inst.worktab.position != SpaceRender; - ImportMesh.run(path, true, replaceExisting); + ImportMesh.run(path, true, true); } if (ui.button(tr("?"))) { File.explorer("https://github.com/armory3d/armorpaint_docs/blob/master/faq.md"); diff --git a/Sources/arm/io/ImportArm.hx b/Sources/arm/io/ImportArm.hx index e72430c1..8f127180 100644 --- a/Sources/arm/io/ImportArm.hx +++ b/Sources/arm/io/ImportArm.hx @@ -60,32 +60,6 @@ class ImportArm { History.reset(); } - public static function runScene(raw: TSceneFormat, path: String) { - var _dataPath = Data.dataPath; - Data.dataPath = path.substring(0, path.lastIndexOf(Path.sep) + 1); - raw.name += "_imported"; - Data.cachedSceneRaws.set(raw.name, raw); - Scene.active.addScene(raw.name, null, function(sceneObject: Object) { - traverseObjects(sceneObject.children); - }); - Data.dataPath = _dataPath; - } - - static function traverseObjects(objects: Array) { - if (objects == null) return; - for (o in objects) { - if (Std.is(o, MeshObject)) { - var mo = cast(o, MeshObject); - var count = mo.data.geom.indices.length; - mo.materials = new haxe.ds.Vector(count); - for (i in 0...count) { - mo.materials[i] = Context.materialScene.data; - } - } - traverseObjects(o.children); - } - } - public static function runProject(path: String) { Data.getBlob(path, function(b: Blob) { var project: TProjectFormat = ArmPack.decode(b.toBytes()); @@ -105,7 +79,7 @@ class ImportArm { // Import as mesh instead if (project.version == null) { - untyped project.objects == null ? runMesh(untyped project) : runScene(untyped project, path); + runMesh(untyped project); return; } diff --git a/Sources/arm/io/ImportFolder.hx b/Sources/arm/io/ImportFolder.hx index ae3f4d41..0fc0edb4 100644 --- a/Sources/arm/io/ImportFolder.hx +++ b/Sources/arm/io/ImportFolder.hx @@ -67,20 +67,10 @@ class ImportFolder { } // Create material - var isScene = UIHeader.inst.worktab.position == SpaceRender; - if (isScene) { - MaterialUtil.removeMaterialCache(); - Data.getMaterial("Scene", "Material2", function(md: MaterialData) { - Context.materialScene = new MaterialSlot(md); - Project.materialsScene.push(Context.materialScene); - }); - } - else { - Context.material = new MaterialSlot(Project.materials[0].data); - Project.materials.push(Context.material); - } - var nodes = isScene ? Context.materialScene.nodes : Context.material.nodes; - var canvas = isScene ? Context.materialScene.canvas : Context.material.canvas; + Context.material = new MaterialSlot(Project.materials[0].data); + Project.materials.push(Context.material); + var nodes = Context.material.nodes; + var canvas = Context.material.canvas; var dirs = path.split(Path.sep); canvas.name = dirs[dirs.length - 1]; var nout: TNode = null; diff --git a/Sources/arm/io/ImportMesh.hx b/Sources/arm/io/ImportMesh.hx index 8d941dcd..f61771a3 100644 --- a/Sources/arm/io/ImportMesh.hx +++ b/Sources/arm/io/ImportMesh.hx @@ -97,17 +97,10 @@ class ImportMesh { return; } - var raw: TMeshData = null; - if (UIHeader.inst.worktab.position == SpaceRender) { - raw = rawMesh(mesh); - if (mesh.texa != null) raw.vertex_arrays.push({ values: mesh.texa, attrib: "tex", data: "short2norm" }); - } - else { - raw = rawMesh(mesh); - if (mesh.texa == null) equirectUnwrap(mesh); - raw.vertex_arrays.push({ values: mesh.texa, attrib: "tex", data: "short2norm" }); - if (mesh.cola != null) raw.vertex_arrays.push({ values: mesh.cola, attrib: "col", data: "short4norm", padding: 1 }); - } + var raw = rawMesh(mesh); + if (mesh.texa == null) equirectUnwrap(mesh); + raw.vertex_arrays.push({ values: mesh.texa, attrib: "tex", data: "short2norm" }); + if (mesh.cola != null) raw.vertex_arrays.push({ values: mesh.cola, attrib: "col", data: "short4norm", padding: 1 }); new MeshData(raw, function(md: MeshData) { if (replaceExisting) { @@ -145,20 +138,13 @@ class ImportMesh { Project.paintObjects = [Context.paintObject]; } else { // Append - var mats = new haxe.ds.Vector(1); - mats[0] = Context.materialScene.data; - var object = Scene.active.addMeshObject(md, mats, Scene.active.getChild("Scene")); - var ar = path.split(Path.sep); - var s = ar[ar.length - 1]; - object.name = s.substring(0, s.length - 4); - // md.geom.calculateAABB(); - // var aabb = md.geom.aabb; - // var dim = new TFloat32Array(3); - // dim[0] = aabb.x; - // dim[1] = aabb.y; - // dim[2] = aabb.z; - // object.raw.dimensions = dim; - Context.selectObject(object); + // var mats = new haxe.ds.Vector(1); + // mats[0] = Context.materialScene.data; + // var object = Scene.active.addMeshObject(md, mats, Scene.active.getChild("Scene")); + // var ar = path.split(Path.sep); + // var s = ar[ar.length - 1]; + // object.name = s.substring(0, s.length - 4); + // Context.selectObject(object); } md.handle = raw.name; diff --git a/Sources/arm/node/MakeMaterial.hx b/Sources/arm/node/MakeMaterial.hx index 9b5b361d..ee33f05b 100644 --- a/Sources/arm/node/MakeMaterial.hx +++ b/Sources/arm/node/MakeMaterial.hx @@ -30,7 +30,6 @@ class MakeMaterial { } public static function parseMeshMaterial() { - if (UIHeader.inst.worktab.position == SpaceRender) return; var m = Project.materials[0].data; for (c in m.shader.contexts) { @@ -134,7 +133,7 @@ class MakeMaterial { public static function parseMeshPreviewMaterial() { if (!getMOut()) return; - var m = UIHeader.inst.worktab.position == SpaceRender ? Context.materialScene.data : Project.materials[0].data; + var m = 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); @@ -162,12 +161,6 @@ class MakeMaterial { m.shader.raw.contexts.push(scon.raw); m.shader.contexts.push(scon); - - #if rp_voxelao - if (UIHeader.inst.worktab.position == SpaceRender) { - makeVoxel(m); - } - #end } #if rp_voxelao @@ -184,11 +177,6 @@ class MakeMaterial { public static function parsePaintMaterial() { if (!getMOut()) return; - if (UIHeader.inst.worktab.position == SpaceRender) { - parseMeshPreviewMaterial(); - return; - } - { var current = @:privateAccess kha.graphics2.Graphics.current; if (current != null) current.end(); diff --git a/Sources/arm/node/MakeMeshPreview.hx b/Sources/arm/node/MakeMeshPreview.hx index 14a5c68e..7afbf342 100644 --- a/Sources/arm/node/MakeMeshPreview.hx +++ b/Sources/arm/node/MakeMeshPreview.hx @@ -14,16 +14,14 @@ import arm.Enums; class MakeMeshPreview { public static var opacityDiscardDecal = 0.05; - public static var opacityDiscardScene = 0.5; public static function run(data: NodeShaderData, matcon: TMaterialContext): NodeShaderContext { - var isScene = UIHeader.inst.worktab.position == SpaceRender; var context_id = "mesh"; var con_mesh: NodeShaderContext = data.add_context({ name: context_id, depth_write: true, compare_mode: "less", - cull_mode: (Context.cullBackfaces || !isScene) ? "clockwise" : "none", + cull_mode: "clockwise", vertex_elements: [{name: "pos", data: "short4norm"}, {name: "nor", data: "short2norm"}, {name: "tex", data: "short2norm"}], color_attachments: ["RGBA64", "RGBA64", "RGBA64"], depth_attachment: "DEPTH32" @@ -92,8 +90,8 @@ class MakeMeshPreview { frag.write('opacity *= textureLod(textexttool, texCoord, 0.0).r;'); } } - if (decal || isScene) { - var opac = isScene ? opacityDiscardScene : opacityDiscardDecal; + if (decal) { + var opac = opacityDiscardDecal; frag.write('if (opacity < $opac) discard;'); } diff --git a/Sources/arm/plugin/Gizmo.hx b/Sources/arm/plugin/Gizmo.hx index 9e4ed108..993e13dc 100644 --- a/Sources/arm/plugin/Gizmo.hx +++ b/Sources/arm/plugin/Gizmo.hx @@ -19,10 +19,8 @@ class Gizmo { static var q0 = new Quat(); public static function update() { - - var isRender = UIHeader.inst.worktab.position == SpaceRender; var isPaint = UIHeader.inst.worktab.position == SpacePaint; - var isObject = isRender && Context.object != null; + var isObject = Context.tool == ToolGizmo; var isDecal = isPaint && Context.layer.fill_layer != null && Context.layer.uvType == UVProject && !Context.layerIsMask; var gizmo = Context.gizmo; @@ -34,7 +32,7 @@ class Gizmo { var kb = Input.getKeyboard(); if (isObject) { - gizmo.transform.loc.setFrom(Context.object.transform.loc); + gizmo.transform.loc.setFrom(Context.paintObject.transform.loc); } else if (isDecal) { gizmo.transform.loc.set(Context.layer.decalMat._30, Context.layer.decalMat._31, Context.layer.decalMat._32); @@ -56,100 +54,42 @@ class Gizmo { // Scene control if (isObject) { - if (mouse.viewX < App.w()) { - if (kb.started("delete") || kb.started("backspace")) { - if (Context.object != null) { - Context.object.remove(); - Context.selectObject(Scene.active.getChild("Scene")); - } - } - if (kb.started("c") && Context.object != null) { - if (Std.is(Context.object, MeshObject)) { - var mo = cast(Context.object, MeshObject); - var object = Scene.active.addMeshObject(mo.data, mo.materials, Scene.active.getChild("Scene")); - object.name = mo.name + ".1"; - - object.transform.loc.setFrom(mo.transform.loc); - object.transform.rot.setFrom(mo.transform.rot); - object.transform.scale.setFrom(mo.transform.scale); - - var hit = RayCaster.planeIntersect(Vec4.zAxis(), new Vec4(), mouse.viewX, mouse.viewY, Scene.active.camera); - if (hit != null) { - object.transform.loc.x = hit.x; - object.transform.loc.y = hit.y; - object.transform.setRotation(0, 0, Math.random() * 3.1516 * 2); - } - - object.transform.buildMatrix(); - - for (t in mo.traits) { // Clone traits - var trait = Type.createInstance(Type.getClass(t), []); - object.addTrait(trait); - } - - Context.selectObject(object); - } - else if (Std.is(Context.object, LightObject)) { - var lo = cast(Context.object, LightObject); - var object = Scene.active.addLightObject(lo.data, Scene.active.getChild("Scene")); - object.name = lo.name + ".1"; - - object.transform.loc.setFrom(lo.transform.loc); - object.transform.rot.setFrom(lo.transform.rot); - object.transform.scale.setFrom(lo.transform.scale); - object.transform.buildMatrix(); - - Context.selectObject(object); - } - Context.rdirty = 3; - Context.ddirty = 3; - } - } - - if (mouse.started("middle")) { - #if arm_physics - var physics = arm.plugin.PhysicsWorld.active; - var pb = physics.pickClosest(mouse.viewX, mouse.viewY); - if (pb != null) Context.selectObject(pb.object); - #end - } - if (Context.translateX || Context.translateY || Context.translateZ || Context.scaleX || Context.scaleY || Context.scaleZ || Context.rotateX || Context.rotateY || Context.rotateZ) { if (Context.translateX) { - Context.object.transform.loc.x = Context.gizmoDrag; + Context.paintObject.transform.loc.x = Context.gizmoDrag; } else if (Context.translateY) { - Context.object.transform.loc.y = Context.gizmoDrag; + Context.paintObject.transform.loc.y = Context.gizmoDrag; } else if (Context.translateZ) { - Context.object.transform.loc.z = Context.gizmoDrag; + Context.paintObject.transform.loc.z = Context.gizmoDrag; } else if (Context.scaleX) { - Context.object.transform.scale.x += Context.gizmoDrag - Context.gizmoDragLast; + Context.paintObject.transform.scale.x += Context.gizmoDrag - Context.gizmoDragLast; } else if (Context.scaleY) { - Context.object.transform.scale.y += Context.gizmoDrag - Context.gizmoDragLast; + Context.paintObject.transform.scale.y += Context.gizmoDrag - Context.gizmoDragLast; } else if (Context.scaleZ) { - Context.object.transform.scale.z += Context.gizmoDrag - Context.gizmoDragLast; + Context.paintObject.transform.scale.z += Context.gizmoDrag - Context.gizmoDragLast; } else if (Context.rotateX) { q0.fromAxisAngle(Vec4.xAxis(), Context.gizmoDrag - Context.gizmoDragLast); - Context.object.transform.rot.mult(q0); + Context.paintObject.transform.rot.mult(q0); } else if (Context.rotateY) { q0.fromAxisAngle(Vec4.yAxis(), Context.gizmoDrag - Context.gizmoDragLast); - Context.object.transform.rot.mult(q0); + Context.paintObject.transform.rot.mult(q0); } else if (Context.rotateZ) { q0.fromAxisAngle(Vec4.zAxis(), Context.gizmoDrag - Context.gizmoDragLast); - Context.object.transform.rot.mult(q0); + Context.paintObject.transform.rot.mult(q0); } Context.gizmoDragLast = Context.gizmoDrag; - Context.object.transform.buildMatrix(); + Context.paintObject.transform.buildMatrix(); #if arm_physics - var pb = Context.object.getTrait(arm.plugin.PhysicsBody); + var pb = Context.paintObject.getTrait(arm.plugin.PhysicsBody); if (pb != null) pb.syncTransform(); #end } @@ -209,7 +149,7 @@ class Gizmo { } Context.gizmoStarted = false; - if (mouse.started("left") && Context.object.name != "Scene") { + if (mouse.started("left") && Context.paintObject.name != "Scene") { // Translate, scale var trs = [Context.gizmoTranslateX.transform, Context.gizmoTranslateY.transform, Context.gizmoTranslateZ.transform, Context.gizmoScaleX.transform, Context.gizmoScaleY.transform, Context.gizmoScaleZ.transform]; @@ -251,7 +191,7 @@ class Gizmo { Context.rdirty = 2; if (isObject) { - var t = Context.object.transform; + var t = Context.paintObject.transform; v.set(t.worldx(), t.worldy(), t.worldz()); } else if (isDecal) { diff --git a/Sources/arm/render/Inc.hx b/Sources/arm/render/Inc.hx index ee25944e..4ec4141c 100644 --- a/Sources/arm/render/Inc.hx +++ b/Sources/arm/render/Inc.hx @@ -184,7 +184,7 @@ class Inc { } } - if (Context.ddirty <= 0 && Context.rdirty <= 0 && (Context.pdirty <= 0 || UIHeader.inst.worktab.position == SpaceRender)) { + if (Context.ddirty <= 0 && Context.rdirty <= 0 && Context.pdirty <= 0) { if (mx != lastX || my != lastY || mouse.locked) Context.ddirty = 0; #if kha_metal if (Context.ddirty > -4) { diff --git a/Sources/arm/render/RenderPathPaint.hx b/Sources/arm/render/RenderPathPaint.hx index b7dce8cd..df2bd365 100644 --- a/Sources/arm/render/RenderPathPaint.hx +++ b/Sources/arm/render/RenderPathPaint.hx @@ -411,7 +411,7 @@ class RenderPathPaint { var fillLayer = Context.layer.fill_layer != null && !Context.layerIsMask; var fillMask = Context.layer.fill_mask != null && Context.layerIsMask; - if (!App.uiEnabled || App.isDragging || UIHeader.inst.worktab.position == SpaceRender || fillLayer || fillMask) { + if (!App.uiEnabled || App.isDragging || fillLayer || fillMask) { return; } diff --git a/Sources/arm/render/RenderPathPreview.hx b/Sources/arm/render/RenderPathPreview.hx index 56bfbd6b..3305991e 100644 --- a/Sources/arm/render/RenderPathPreview.hx +++ b/Sources/arm/render/RenderPathPreview.hx @@ -123,7 +123,7 @@ class RenderPathPreview { #end var framebuffer = "texpreview"; - var selectedMat = UIHeader.inst.worktab.position == SpaceRender ? Context.materialScene : Context.material; + var selectedMat = Context.material; RenderPath.active.renderTargets.get("texpreview").image = selectedMat.image; RenderPath.active.renderTargets.get("texpreview_icon").image = selectedMat.imageIcon; diff --git a/Sources/arm/ui/TabMaterials.hx b/Sources/arm/ui/TabMaterials.hx index 94551d30..b892c2dc 100644 --- a/Sources/arm/ui/TabMaterials.hx +++ b/Sources/arm/ui/TabMaterials.hx @@ -22,35 +22,18 @@ class TabMaterials { public static function draw() { var ui = UISidebar.inst.ui; - var isScene = UIHeader.inst.worktab.position == SpaceRender; - var materials = isScene ? Project.materialsScene : Project.materials; - var selectMaterial = isScene ? Context.selectMaterialScene : Context.selectMaterial; + var materials = Project.materials; + var selectMaterial = Context.selectMaterial; if (ui.tab(UISidebar.inst.htab1, tr("Materials"))) { ui.beginSticky(); ui.row([1 / 4, 1 / 4, 1 / 4]); if (ui.button(tr("New"))) { - if (isScene) { - if (Context.object != Context.paintObject && Std.is(Context.object, MeshObject)) { - MaterialUtil.removeMaterialCache(); - Data.getMaterial("Scene", "Material2", function(md: iron.data.MaterialData) { - ui.g.end(); - md.name = "Material2." + materials.length; - Context.materialScene = new MaterialSlot(md); - materials.push(Context.materialScene); - selectMaterial(materials.length - 1); - RenderUtil.makeMaterialPreview(); - ui.g.begin(false); - }); - } - } - else { - ui.g.end(); - Context.material = new MaterialSlot(materials[0].data); - materials.push(Context.material); - updateMaterial(); - ui.g.begin(false); - } + ui.g.end(); + Context.material = new MaterialSlot(materials[0].data); + materials.push(Context.material); + updateMaterial(); + ui.g.begin(false); } if (ui.button(tr("Import"))) { @@ -85,7 +68,7 @@ class TabMaterials { var img = ui.SCALE() > 1 ? materials[i].image : materials[i].imageIcon; var imgFull = materials[i].image; - if (getSelectedMaterial() == materials[i]) { + if (Context.material == materials[i]) { // ui.fill(1, -2, img.width + 3, img.height + 3, ui.t.HIGHLIGHT_COL); // TODO var off = row % 2 == 1 ? 1 : 0; var w = 50; @@ -105,7 +88,7 @@ class TabMaterials { var tile = ui.SCALE() > 1 ? 100 : 50; var state = materials[i].previewReady ? ui.image(img) : ui.image(Res.get("icons.k"), -1, null, tile, tile, tile, tile); if (state == State.Started && ui.inputY > ui._windowY) { - if (getSelectedMaterial() != materials[i]) { + if (Context.material != materials[i]) { selectMaterial(i); if (UIHeader.inst.worktab.position == SpaceMaterial) { function _init() { @@ -117,7 +100,7 @@ class TabMaterials { var mouse = Input.getMouse(); App.dragOffX = -(mouse.x - uix - ui._windowX - 3); App.dragOffY = -(mouse.y - uiy - ui._windowY + 1); - App.dragMaterial = getSelectedMaterial(); + App.dragMaterial = Context.material; if (Time.time() - Context.selectTime < 0.25) { UISidebar.inst.showMaterialNodes(); App.dragMaterial = null; @@ -229,10 +212,6 @@ class TabMaterials { if (decal) RenderUtil.makeDecalPreview(); } - static function getSelectedMaterial():MaterialSlot { - return UIHeader.inst.worktab.position == SpaceRender ? Context.materialScene : Context.material; - } - static function updateMaterialPointers(nodes: Array, i: Int) { for (n in nodes) { if (n.type == "MATERIAL") { diff --git a/Sources/arm/ui/TabOutliner.hx b/Sources/arm/ui/TabOutliner.hx deleted file mode 100644 index 05f88424..00000000 --- a/Sources/arm/ui/TabOutliner.hx +++ /dev/null @@ -1,70 +0,0 @@ -package arm.ui; - -import zui.Zui; -import zui.Id; -import iron.object.Object; -import iron.object.MeshObject; -import iron.Scene; - -class TabOutliner { - - @:access(zui.Zui) - public static function draw() { - var ui = UISidebar.inst.ui; - if (ui.tab(UISidebar.inst.htab0, tr("Outliner"))) { - ui.row([1 / 4]); - if (ui.button(tr("Import"))) Project.importMesh(); - - var i = 0; - function drawList(h: Handle, o: Object) { - if (o.name.charAt(0) == ".") return; // Hidden - if (Std.is(o, MeshObject) && cast(o, MeshObject).force_context != null) return; // Show mesh context only - var b = false; - if (i % 2 == 0) { - ui.fill(-ui._x, 0, ui._windowW, ui.t.ELEMENT_H, ui.t.WINDOW_BG_COL - 0x00040404); - } - if (Context.object == o) { - ui.fill(-ui._x, 0, ui._windowW, ui.t.ELEMENT_H, ui.t.HIGHLIGHT_COL); - } - if (o.children.length > 0) { - ui.row([1 / 13, 12 / 13]); - b = ui.panel(h.nest(i, {selected: true}), "", true, false, false); - ui.text(o.name); - } - else { - ui._x += 18; // Sign offset - - // Draw line that shows parent relations - ui.fill(-15 / ui.SCALE(), ui.t.ELEMENT_H / 2, 15, 1, ui.t.ACCENT_COL); - - ui.text(o.name); - ui._x -= 18; - } - if (ui.isReleased) { - Context.selectObject(o); - Context.ddirty = 2; - UISidebar.inst.hwnd1.redraws = 2; - } - i++; - if (b) { - var currentY = ui._y; - for (c in o.children) { - ui.indent(); - drawList(h, c); - ui.unindent(); - } - - // Draw line that shows parent relations - var h = (ui._y - currentY - ui.ELEMENT_H() / 2) / ui.SCALE(); - ui.fill(15, -h - ui.t.ELEMENT_H / 2, 1, h, ui.t.ACCENT_COL); - } - } - var _ELEMENT_OFFSET = ui.t.ELEMENT_OFFSET; - ui.t.ELEMENT_OFFSET = 0; - for (c in Scene.active.root.children) { - drawList(Id.handle(), c); - } - ui.t.ELEMENT_OFFSET = _ELEMENT_OFFSET; - } - } -} diff --git a/Sources/arm/ui/TabProperties.hx b/Sources/arm/ui/TabProperties.hx deleted file mode 100644 index eab10da4..00000000 --- a/Sources/arm/ui/TabProperties.hx +++ /dev/null @@ -1,127 +0,0 @@ -package arm.ui; - -import zui.Id; - -class TabProperties { - - static var row4 = [1 / 4, 1 / 4, 1 / 4, 1 / 4]; - - public static function draw() { - var ui = UISidebar.inst.ui; - if (ui.tab(UISidebar.inst.htab1, tr("Properties"))) { - if (Context.object != null) { - - var h = Id.handle(); - h.selected = Context.object.visible; - Context.object.visible = ui.check(h, tr("Visible")); - if (h.changed) Context.ddirty = 2; - - var loc = Context.object.transform.loc; - var scale = Context.object.transform.scale; - var rot = Context.object.transform.rot.getEuler(); - rot.mult(180 / 3.141592); - var f = 0.0; - ui.changed = false; - - ui.row(row4); - ui.text(tr("Location")); - - h = Id.handle(); - h.text = roundfp(loc.x) + ""; - f = Std.parseFloat(ui.textInput(h, "X")); - if (h.changed) { loc.x = f; Context.ddirty = 2; } - - h = Id.handle(); - h.text = roundfp(loc.y) + ""; - f = Std.parseFloat(ui.textInput(h, "Y")); - if (h.changed) { loc.y = f; Context.ddirty = 2; } - - h = Id.handle(); - h.text = roundfp(loc.z) + ""; - f = Std.parseFloat(ui.textInput(h, "Z")); - if (h.changed) { loc.z = f; Context.ddirty = 2; } - - ui.row(row4); - ui.text(tr("Rotation")); - - h = Id.handle(); - h.text = roundfp(rot.x) + ""; - f = Std.parseFloat(ui.textInput(h, "X")); - if (h.changed) { rot.x = f; Context.ddirty = 2; } - - h = Id.handle(); - h.text = roundfp(rot.y) + ""; - f = Std.parseFloat(ui.textInput(h, "Y")); - if (h.changed) { rot.y = f; Context.ddirty = 2; } - - h = Id.handle(); - h.text = roundfp(rot.z) + ""; - f = Std.parseFloat(ui.textInput(h, "Z")); - if (h.changed) { rot.z = f; Context.ddirty = 2; } - - if (ui.changed && Context.object.name != "Scene") { - rot.mult(3.141592 / 180); - Context.object.transform.rot.fromEuler(rot.x, rot.y, rot.z); - Context.object.transform.buildMatrix(); - } - - ui.row(row4); - ui.text(tr("Scale")); - - h = Id.handle(); - h.text = roundfp(scale.x) + ""; - f = Std.parseFloat(ui.textInput(h, "X")); - if (h.changed) { scale.x = f; Context.ddirty = 2; } - - h = Id.handle(); - h.text = roundfp(scale.y) + ""; - f = Std.parseFloat(ui.textInput(h, "Y")); - if (h.changed) { scale.y = f; Context.ddirty = 2; } - - h = Id.handle(); - h.text = roundfp(scale.z) + ""; - f = Std.parseFloat(ui.textInput(h, "Z")); - if (h.changed) { scale.z = f; Context.ddirty = 2; } - - Context.object.transform.dirty = true; - - if (ui.changed && Context.object.name != "Scene") { - #if arm_physics - var pb = Context.object.getTrait(arm.plugin.PhysicsBody); - if (pb != null) { - pb.setLinearVelocity(0, 0, 0); - pb.setAngularVelocity(0, 0, 0); - pb.syncTransform(); - } - #end - } - - // if (Std.is(Context.object, LightObject)) { - // var light = cast(Context.object, LightObject); - // var lhandle = Id.handle(); - // lhandle.value = light.data.raw.strength / 1333; - // lhandle.value = Std.int(lhandle.value * 100) / 100; - // light.data.raw.strength = ui.slider(lhandle, "Strength", 0.0, 4.0, true) * 1333; - // if (lhandle.changed) { - // Context.ddirty = 2; - // } - // } - // else if (Std.is(Context.object, CameraObject)) { - // var scene = Scene.active; - // var cam = scene.cameras[0]; - // var fovHandle = Id.handle({value: Std.int(cam.data.raw.fov * 100) / 100}); - // cam.data.raw.fov = ui.slider(fovHandle, "FoV", 0.3, 2.0, true); - // if (fovHandle.changed) { - // cam.buildProjection(); - // Context.ddirty = 2; - // } - // } - } - } - } - - static function roundfp(f: Float, precision = 2): Float { - f *= Math.pow(10, precision); - return Math.round(f) / Math.pow(10, precision); - } -} diff --git a/Sources/arm/ui/UIMenubar.hx b/Sources/arm/ui/UIMenubar.hx index eeb7d8b0..69545f76 100644 --- a/Sources/arm/ui/UIMenubar.hx +++ b/Sources/arm/ui/UIMenubar.hx @@ -55,7 +55,6 @@ class UIMenubar { ui.tab(UIHeader.inst.worktab, tr("Paint")); ui.tab(UIHeader.inst.worktab, tr("Material")); ui.tab(UIHeader.inst.worktab, tr("Bake")); - // ui.tab(UIHeader.inst.worktab, tr("Render")); if (UIHeader.inst.worktab.changed) { Context.ddirty = 2; UIToolbar.inst.toolbarHandle.redraws = 2; @@ -70,11 +69,8 @@ class UIMenubar { else if (UIHeader.inst.worktab.position == SpaceBake) { Context.selectTool(ToolBake); } - else { - Context.selectTool(ToolGizmo); - } - - if (UIHeader.inst.worktab.position == SpaceMaterial) { + else if (UIHeader.inst.worktab.position == SpaceMaterial) { + Context.selectTool(ToolPicker); Layers.updateFillLayers(); } diff --git a/Sources/arm/ui/UINodes.hx b/Sources/arm/ui/UINodes.hx index b5c6f71c..690b97da 100644 --- a/Sources/arm/ui/UINodes.hx +++ b/Sources/arm/ui/UINodes.hx @@ -246,17 +246,13 @@ class UINodes { } public function getCanvasMaterial(): TNodeCanvas { - var isScene = UIHeader.inst.worktab.position == SpaceRender; - return isScene ? Context.materialScene.canvas : Context.material.canvas; + return Context.material.canvas; } public function getNodes(): Nodes { if (canvasType == CanvasMaterial) { if (groupStack.length > 0) return groupStack[groupStack.length - 1].nodes; - else { - var isScene = UIHeader.inst.worktab.position == SpaceRender; - return isScene ? Context.materialScene.nodes : Context.material.nodes; - } + else return Context.material.nodes; } else return Context.brush.nodes; } diff --git a/Sources/arm/ui/UISidebar.hx b/Sources/arm/ui/UISidebar.hx index 2b6930c4..3834d8af 100644 --- a/Sources/arm/ui/UISidebar.hx +++ b/Sources/arm/ui/UISidebar.hx @@ -67,13 +67,6 @@ class UISidebar { Context.material = Project.materials[0]; }); } - if (Project.materialsScene == null) { - Project.materialsScene = []; - Data.getMaterial("Scene", "Material2", function(m: MaterialData) { - Project.materialsScene.push(new MaterialSlot(m)); - Context.materialScene = Project.materialsScene[0]; - }); - } if (Project.brushes == null) { Project.brushes = []; @@ -149,8 +142,7 @@ class UISidebar { Context.gizmoRotateY = Context.gizmo.getChild(".RotateY"); Context.gizmoRotateZ = Context.gizmo.getChild(".RotateZ"); - Context.object = Scene.active.getChild(".Cube"); - Context.paintObject = cast(Context.object, MeshObject); + Context.paintObject = cast(Scene.active.getChild(".Cube"), MeshObject); Project.paintObjects = [Context.paintObject]; if (Project.filepath == "") { @@ -679,22 +671,11 @@ class UISidebar { TabLayers.draw(); TabHistory.draw(); TabPlugins.draw(); - - if (UIHeader.inst.worktab.position == SpaceRender) { - TabOutliner.draw(); - } } if (ui.window(hwnd1, tabx, Config.raw.layout[LayoutSidebarH0], Config.raw.layout[LayoutSidebarW], Config.raw.layout[LayoutSidebarH1])) { - if (UIHeader.inst.worktab.position != SpaceRender) { - Context.object = Context.paintObject; - } TabMaterials.draw(); TabBrushes.draw(); TabParticles.draw(); - - if (UIHeader.inst.worktab.position == SpaceRender) { - TabProperties.draw(); - } } if (ui.window(hwnd2, tabx, Config.raw.layout[LayoutSidebarH0] + Config.raw.layout[LayoutSidebarH1], Config.raw.layout[LayoutSidebarW], Config.raw.layout[LayoutSidebarH2])) { TabTextures.draw(); diff --git a/Sources/arm/ui/UIToolbar.hx b/Sources/arm/ui/UIToolbar.hx index 2307f51f..d6d1c12d 100644 --- a/Sources/arm/ui/UIToolbar.hx +++ b/Sources/arm/ui/UIToolbar.hx @@ -76,15 +76,15 @@ class UIToolbar { ui._x -= 2; ui._y += 2; } + + // ui._x += 2; + // if (Context.tool == ToolGizmo) ui.fill(-1, 2, 32 + 2, 32 + 2, ui.t.HIGHLIGHT_COL); + // if (ui.image(img, iconAccent, null, imgw * 10, 0, imgw, imgw) == State.Started) Context.selectTool(ToolGizmo); + // if (ui.isHovered) ui.tooltip(tr("Gizmo") + " (G)"); + // ui._x -= 2; + // ui._y += 2; } else if (UIHeader.inst.worktab.position == SpaceMaterial) { - ui._x += 2; - if (Context.tool == ToolGizmo) ui.fill(-1, 2, 32 + 2, 32 + 2, ui.t.HIGHLIGHT_COL); - if (ui.image(img, iconAccent, null, imgw * 10, 0, imgw, imgw) == State.Started) Context.selectTool(ToolGizmo); - if (ui.isHovered) ui.tooltip(tr("Gizmo") + " (G)"); - ui._x -= 2; - ui._y += 2; - ui._x += 2; if (Context.tool == ToolPicker) ui.fill(-1, 2, 32 + 2, 32 + 2, ui.t.HIGHLIGHT_COL); if (ui.image(img, iconAccent, null, imgw * 9, 0, imgw, imgw) == State.Started) Context.selectTool(ToolPicker); @@ -100,14 +100,6 @@ class UIToolbar { ui._x -= 2; ui._y += 2; } - else if (UIHeader.inst.worktab.position == SpaceRender) { - ui._x += 2; - if (Context.tool == ToolGizmo) ui.fill(-1, 2, 32 + 2, 32 + 2, ui.t.HIGHLIGHT_COL); - if (ui.image(img, iconAccent, null, imgw * 10, 0, imgw, imgw) == State.Started) Context.selectTool(ToolGizmo); - if (ui.isHovered) ui.tooltip(tr("Gizmo") + " (G)"); - ui._x -= 2; - ui._y += 2; - } ui.imageScrollAlign = true; } diff --git a/Sources/arm/util/MeshUtil.hx b/Sources/arm/util/MeshUtil.hx index 3669858f..8f52144d 100644 --- a/Sources/arm/util/MeshUtil.hx +++ b/Sources/arm/util/MeshUtil.hx @@ -13,10 +13,10 @@ import arm.Enums; class MeshUtil { public static function mergeMesh() { + var paintObjects = Project.paintObjects; var vlen = 0; var ilen = 0; var maxScale = 0.0; - var paintObjects = Project.paintObjects; for (i in 0...paintObjects.length) { vlen += paintObjects[i].data.raw.vertex_arrays[0].values.length; ilen += paintObjects[i].data.raw.index_arrays[0].values.length; @@ -66,6 +66,10 @@ class MeshUtil { }; if (va3 != null) raw.vertex_arrays.push({ values: va3, attrib: "col", data: "short4norm", padding: 1 }); + if (Context.mergedObject != null) { + Data.deleteMesh(Context.mergedObject.data.handle); + } + new MeshData(raw, function(md: MeshData) { Context.mergedObject = new MeshObject(md, Context.paintObject.materials); Context.mergedObject.name = Context.paintObject.name; @@ -79,7 +83,7 @@ class MeshUtil { } public static function swapAxis(a: Int, b: Int) { - var objects = UIHeader.inst.worktab.position == SpaceRender ? [cast(Context.object, MeshObject)] : Project.paintObjects; + var objects = Project.paintObjects; for (o in objects) { // Remapping vertices, backle up // 0 - x, 1 - y, 2 - z @@ -130,7 +134,7 @@ class MeshUtil { } public static function flipNormals() { - var objects = UIHeader.inst.worktab.position == SpaceRender ? [cast(Context.object, MeshObject)] : Project.paintObjects; + var objects = Project.paintObjects; for (o in objects) { var g = o.data.geom; var l = g.structLength; @@ -154,7 +158,7 @@ class MeshUtil { var vc = new Vec4(); var cb = new Vec4(); var ab = new Vec4(); - var objects = UIHeader.inst.worktab.position == SpaceRender ? [cast(Context.object, MeshObject)] : Project.paintObjects; + var objects = Project.paintObjects; for (o in objects) { var g = o.data.geom; var l = g.structLength; diff --git a/Sources/arm/util/RenderUtil.hx b/Sources/arm/util/RenderUtil.hx index 957bffdd..187cdfe7 100644 --- a/Sources/arm/util/RenderUtil.hx +++ b/Sources/arm/util/RenderUtil.hx @@ -43,14 +43,8 @@ class RenderUtil { var painto = Context.paintObject; Context.paintObject = sphere; - if (UIHeader.inst.worktab.position == SpaceRender) { - sphere.materials[0] = Context.materialScene.data; - Context.materialScene.previewReady = true; - } - else { - sphere.materials[0] = Project.materials[0].data; - Context.material.previewReady = true; - } + sphere.materials[0] = Project.materials[0].data; + Context.material.previewReady = true; Context.savedCamera.setFrom(Scene.active.camera.transform.local); var m = new Mat4(0.9146286343879498, -0.0032648027153306235, 0.404281837254303, 0.4659988049397712, 0.404295023959927, 0.007367569133732468, -0.9145989516155143, -1.0687517188018691, 0.000007410128652369705, 0.9999675337275382, 0.008058532943908717, 0.015935682577325486, 0, 0, 0, 1); diff --git a/Sources/arm/util/ViewportUtil.hx b/Sources/arm/util/ViewportUtil.hx index 28187d2f..ff2cd6a4 100644 --- a/Sources/arm/util/ViewportUtil.hx +++ b/Sources/arm/util/ViewportUtil.hx @@ -45,8 +45,8 @@ class ViewportUtil { } public static function setView(x: Float, y: Float, z: Float, rx: Float, ry: Float, rz: Float) { - Context.object.transform.rot.set(0, 0, 0, 1); - Context.object.transform.dirty = true; + Context.paintObject.transform.rot.set(0, 0, 0, 1); + Context.paintObject.transform.dirty = true; var cam = Scene.active.camera; var dist = cam.transform.loc.length(); cam.transform.loc.set(x * dist, y * dist, z * dist);