diff --git a/Sources/arm/App.hx b/Sources/arm/App.hx index 68d20719..b9126c01 100644 --- a/Sources/arm/App.hx +++ b/Sources/arm/App.hx @@ -16,6 +16,7 @@ import arm.ui.UIView2D; import arm.ui.UIMenu; import arm.ui.UIBox; import arm.ui.UIFiles; +import arm.ui.TabLayers; import arm.io.ImportAsset; import arm.sys.Path; import arm.util.RenderUtil; @@ -24,6 +25,7 @@ import arm.data.MaterialSlot; import arm.data.LayerSlot; import arm.data.ConstData; import arm.plugin.Camera; +import arm.node.MaterialParser; import arm.Config; import arm.Tool; import arm.Project; @@ -376,6 +378,11 @@ class App { } UINodes.inst.acceptLayerDrag(index); } + else if (inLayers && isDragging) { + Project.layers.remove(dragLayer); + Project.layers.insert(TabLayers.dragDestination, dragLayer); + MaterialParser.parseMeshMaterial(); + } dragLayer = null; } else if (dragFile != null) { diff --git a/Sources/arm/ui/TabLayers.hx b/Sources/arm/ui/TabLayers.hx index 831c4022..c4369f55 100644 --- a/Sources/arm/ui/TabLayers.hx +++ b/Sources/arm/ui/TabLayers.hx @@ -10,6 +10,8 @@ import arm.util.UVUtil; class TabLayers { + public static var dragDestination = 1; + @:access(zui.Zui) public static function draw() { var ui = UITrait.inst.ui; @@ -80,6 +82,16 @@ class TabLayers { } } + // Highlight drag destination + var mouse = Input.getMouse(); + var mx = mouse.x; + var my = mouse.y; + var inLayers = mx > UITrait.inst.tabx && my < UITrait.inst.tabh; + if (App.isDragging && App.dragLayer != null && my > ui._y - step && my < ui._y + step) { + ui.fill(checkw, 0, (ui._windowW / ui.SCALE() - 2) - checkw, 2 * ui.SCALE(), ui.t.HIGHLIGHT_COL); + dragDestination = Project.layers.indexOf(App.dragLayer) < i ? i : i + 1; + } + if (l.texpaint_mask != null) { ui.row([8 / 100, 16 / 100, 16 / 100, 20 / 100, 30 / 100, 10 / 100]); }