diff --git a/Sources/Main.hx b/Sources/Main.hx index d8b12628..ef2ce77d 100644 --- a/Sources/Main.hx +++ b/Sources/Main.hx @@ -1,11 +1,9 @@ package ; class Main { public static inline var projectName = 'untitled - ArmorPaint'; - public static inline var projectPackage = 'arm'; public static inline var voxelgiVoxelSize = 2.0 / 256; public static inline var voxelgiHalfExtents = 1; public static function main() { - iron.object.BoneAnimation.skinMaxBones = 50; armory.system.Starter.main( 'Scene', 0, diff --git a/Sources/arm/App.hx b/Sources/arm/App.hx index 3208f2a5..2163f51e 100644 --- a/Sources/arm/App.hx +++ b/Sources/arm/App.hx @@ -1,22 +1,31 @@ package arm; +import kha.graphics2.truetype.StbTruetype; +import kha.Image; +import kha.Font; +import kha.System; import zui.Zui; import zui.Zui.Handle; -import zui.Canvas; +import zui.Themes; +import zui.Nodes; +import iron.Scene; +import iron.data.Data; +import iron.system.Input; import arm.ui.UITrait; import arm.ui.UINodes; import arm.ui.UIView2D; import arm.ui.UIMenu; import arm.ui.UIBox; import arm.ui.UIFiles; +import arm.io.Importer; import arm.util.Path; +import arm.util.RenderUtil; import arm.data.MaterialSlot; import arm.data.ConstData; import arm.Config; import arm.Tool; -import kha.graphics2.truetype.StbTruetype; -class App extends iron.Trait { +class App { public static var version = "0.6"; public static function x():Int { return appx; } @@ -26,7 +35,7 @@ class App extends iron.Trait { public static var uienabled = true; public static var isDragging = false; public static var dragMaterial:MaterialSlot = null; - public static var dragAsset:TAsset = null; + public static var dragAsset:zui.Canvas.TAsset = null; public static var dragOffX = 0.0; public static var dragOffY = 0.0; public static var showFiles = false; @@ -39,9 +48,9 @@ class App extends iron.Trait { public static var dropPath = ""; public static var dropX = 0.0; public static var dropY = 0.0; - public static var font:kha.Font = null; - public static var theme:zui.Themes.TTheme; - public static var color_wheel:kha.Image; + public static var font:Font = null; + public static var theme:TTheme; + public static var color_wheel:Image; public static var uibox:Zui; public static var path = '/'; public static var showMenu = false; @@ -52,8 +61,6 @@ class App extends iron.Trait { public static var K:Dynamic; // Config.Keymap public function new() { - super(); - // Init config C = Config.init(); K = C.keymap; @@ -63,9 +70,9 @@ class App extends iron.Trait { #end // Set base dir for file browser - zui.Ext.dataPath = iron.data.Data.dataPath; + zui.Ext.dataPath = Data.dataPath; - kha.System.notifyOnDropFiles(function(filePath:String) { + System.notifyOnDropFiles(function(filePath:String) { if (!checkAscii(filePath)) return; dropPath = filePath; dropPath = StringTools.replace(dropPath, "%20", " "); // Linux can pass %20 on drop @@ -77,8 +84,8 @@ class App extends iron.Trait { untyped Krom.setSaveAndQuitCallback(saveAndQuitCallback); #end - iron.data.Data.getFont("font_default.ttf", function(f:kha.Font) { - iron.data.Data.getImage('color_wheel.png', function(image:kha.Image) { + Data.getFont("font_default.ttf", function(f:Font) { + Data.getImage('color_wheel.png', function(image:Image) { font = f; theme = zui.Themes.dark; theme.FILL_WINDOW_BG = true; @@ -102,16 +109,16 @@ class App extends iron.Trait { for (i in 0...ConstData.font_yoff.length) chars[i].yoff = ConstData.font_yoff[i]; for (i in 0...ConstData.font_xadvance.length) chars[i].xadvance = ConstData.font_xadvance[i]; @:privateAccess kimg.chars = chars; - iron.data.Data.getBlob("font13.bin", function(fontbin:kha.Blob) { - @:privateAccess kimg.texture = kha.Image.fromBytes(fontbin.toBytes(), 128, 128, kha.graphics4.TextureFormat.L8); + Data.getBlob("font13.bin", function(fontbin:kha.Blob) { + @:privateAccess kimg.texture = Image.fromBytes(fontbin.toBytes(), 128, 128, kha.graphics4.TextureFormat.L8); // @:privateAccess cast(font, kha.Kravur).images.set(130095, kimg); @:privateAccess cast(font, kha.Kravur).images.set(130174, kimg); }); #end color_wheel = image; - zui.Nodes.getEnumTexts = getEnumTexts; - zui.Nodes.mapEnum = mapEnum; + Nodes.getEnumTexts = getEnumTexts; + Nodes.mapEnum = mapEnum; uibox = new Zui({ font: f, scaleFactor: armory.data.Config.raw.window_scale }); iron.App.notifyOnInit(function() { @@ -128,10 +135,10 @@ class App extends iron.Trait { } #end iron.App.notifyOnUpdate(update); - var root = iron.Scene.active.root; - root.addTrait(new UITrait()); - root.addTrait(new UINodes()); - root.addTrait(new UIView2D()); + var root = Scene.active.root; + new UITrait(); + new UINodes(); + new UIView2D(); root.addTrait(new arm.plugin.FlyCamera()); root.addTrait(new arm.plugin.OrbitCamera()); root.addTrait(new arm.plugin.RotateCamera()); @@ -143,11 +150,11 @@ class App extends iron.Trait { iron.App.notifyOnRender2D(render); appx = C.ui_layout == 0 ? UITrait.inst.toolbarw : UITrait.inst.windowW + UITrait.inst.toolbarw; appy = UITrait.inst.headerh * 2; - var cam = iron.Scene.active.camera; + var cam = Scene.active.camera; cam.data.raw.fov = Std.int(cam.data.raw.fov * 100) / 100; cam.buildProjection(); if (fileArg != "") { - arm.io.Importer.importFile(fileArg); + Importer.importFile(fileArg); if (Path.checkMeshFormat(fileArg)) { UITrait.inst.toggleDistractFree(); } @@ -167,26 +174,26 @@ class App extends iron.Trait { public static function w():Int { // Draw material preview - if (UITrait.inst != null && UITrait.inst.materialPreview) return arm.util.RenderUtil.matPreviewSize; + if (UITrait.inst != null && UITrait.inst.materialPreview) return RenderUtil.matPreviewSize; // Drawing decal preview - if (UITrait.inst != null && UITrait.inst.decalPreview) return arm.util.RenderUtil.decalPreviewSize; + if (UITrait.inst != null && UITrait.inst.decalPreview) return RenderUtil.decalPreviewSize; var res = 0; if (UINodes.inst == null || UITrait.inst == null) { - res = kha.System.windowWidth() - UITrait.defaultWindowW; + res = System.windowWidth() - UITrait.defaultWindowW; res -= UITrait.defaultToolbarW; } else if (UINodes.inst.show || UIView2D.inst.show) { - res = Std.int((kha.System.windowWidth() - UITrait.inst.windowW) / 2); + res = Std.int((System.windowWidth() - UITrait.inst.windowW) / 2); res -= UITrait.inst.toolbarw; } else if (UITrait.inst.show) { - res = kha.System.windowWidth() - UITrait.inst.windowW; + res = System.windowWidth() - UITrait.inst.windowW; res -= UITrait.inst.toolbarw; } else { - res = kha.System.windowWidth(); + res = System.windowWidth(); } return res > 0 ? res : 1; // App was minimized, force render path resize @@ -194,13 +201,13 @@ class App extends iron.Trait { public static function h():Int { // Draw material preview - if (UITrait.inst != null && UITrait.inst.materialPreview) return arm.util.RenderUtil.matPreviewSize; + if (UITrait.inst != null && UITrait.inst.materialPreview) return RenderUtil.matPreviewSize; // Drawing decal preview - if (UITrait.inst != null && UITrait.inst.decalPreview) return arm.util.RenderUtil.decalPreviewSize; + if (UITrait.inst != null && UITrait.inst.decalPreview) return RenderUtil.decalPreviewSize; var res = 0; - res = kha.System.windowHeight(); + res = System.windowHeight(); if (UITrait.inst == null) res -= UITrait.defaultHeaderH * 3; if (UITrait.inst != null && UITrait.inst.show && res > 0) res -= UITrait.inst.headerh * 3; @@ -212,8 +219,8 @@ class App extends iron.Trait { resize(); // Save window size - // C.window_w = kha.System.windowWidth(); - // C.window_h = kha.System.windowHeight(); + // C.window_w = System.windowWidth(); + // C.window_h = System.windowHeight(); // Cap height, window is not centered properly // var disp = kha.Display.primary; // if (disp.height > 0 && C.window_h > disp.height - 140) { @@ -224,9 +231,9 @@ class App extends iron.Trait { #end public static function resize() { - if (kha.System.windowWidth() == 0 || kha.System.windowHeight() == 0) return; + if (System.windowWidth() == 0 || System.windowHeight() == 0) return; - var cam = iron.Scene.active.camera; + var cam = Scene.active.camera; if (cam.data.raw.ortho != null) { cam.data.raw.ortho[2] = -2 * (iron.App.h() / iron.App.w()); cam.data.raw.ortho[3] = 2 * (iron.App.h() / iron.App.w()); @@ -270,8 +277,8 @@ class App extends iron.Trait { } static function update() { - var mouse = iron.system.Input.getMouse(); - var kb = iron.system.Input.getKeyboard(); + var mouse = Input.getMouse(); + var kb = Input.getKeyboard(); if ((dragAsset != null || dragMaterial != null) && (mouse.movementX != 0 || mouse.movementY != 0)) { @@ -327,7 +334,7 @@ class App extends iron.Trait { if (!wait) { dropX = mouse.x + App.x(); dropY = mouse.y + App.y(); - arm.io.Importer.importFile(dropPath, dropX, dropY); + Importer.importFile(dropPath, dropX, dropY); dropPath = ""; } } @@ -351,9 +358,9 @@ class App extends iron.Trait { } static function render(g:kha.graphics2.Graphics) { - if (kha.System.windowWidth() == 0 || kha.System.windowHeight() == 0) return; + if (System.windowWidth() == 0 || System.windowHeight() == 0) return; - var mouse = iron.system.Input.getMouse(); + var mouse = Input.getMouse(); if (isDragging) { var img = dragAsset != null ? UITrait.inst.getImage(dragAsset) : dragMaterial.imageIcon; @:privateAccess var size = 50 * UITrait.inst.ui.SCALE; diff --git a/Sources/arm/Layers.hx b/Sources/arm/Layers.hx index d4ee69bc..b7c28510 100644 --- a/Sources/arm/Layers.hx +++ b/Sources/arm/Layers.hx @@ -1,18 +1,28 @@ package arm; +import kha.Image; import kha.graphics4.TextureFormat; import kha.graphics4.TextureUnit; import kha.graphics4.ConstantLocation; +import kha.graphics4.PipelineState; +import kha.graphics4.VertexShader; +import kha.graphics4.FragmentShader; +import kha.graphics4.VertexStructure; +import kha.graphics4.VertexData; +import kha.graphics4.BlendingFactor; +import kha.graphics4.CompareMode; import iron.RenderPath; import arm.ui.UITrait; import arm.data.ConstData; +import arm.nodes.MaterialParser; +import arm.render.RenderPathPaint; import arm.Tool; class Layers { - public static var pipe:kha.graphics4.PipelineState = null; - public static var pipeCopy:kha.graphics4.PipelineState; - public static var pipeMask:kha.graphics4.PipelineState; + public static var pipe:PipelineState = null; + public static var pipeCopy:PipelineState; + public static var pipeMask:PipelineState; public static var tex0:TextureUnit; public static var tex1:TextureUnit; public static var tex2:TextureUnit; @@ -22,14 +32,14 @@ class Layers { public static var opac:ConstantLocation; public static var tex0Mask:TextureUnit; public static var texaMask:TextureUnit; - public static var imga:kha.Image = null; - public static var imgb:kha.Image = null; - public static var imgc:kha.Image = null; - public static var expa:kha.Image = null; - public static var expb:kha.Image = null; - public static var expc:kha.Image = null; - public static var expd:kha.Image = null; - public static var pipeCursor:kha.graphics4.PipelineState; + public static var imga:Image = null; + public static var imgb:Image = null; + public static var imgc:Image = null; + public static var expa:Image = null; + public static var expb:Image = null; + public static var expc:Image = null; + public static var expd:Image = null; + public static var pipeCursor:PipelineState; public static var cursorVP:ConstantLocation; public static var cursorInvVP:ConstantLocation; public static var cursorMouse:ConstantLocation; @@ -97,11 +107,11 @@ class Layers { rts.get("texpaint_blend0").image.unload(); rts.get("texpaint_blend0").raw.width = Config.getTextureRes(); rts.get("texpaint_blend0").raw.height = Config.getTextureRes(); - rts.get("texpaint_blend0").image = kha.Image.createRenderTarget(Config.getTextureRes(), Config.getTextureRes(), TextureFormat.L8); + rts.get("texpaint_blend0").image = Image.createRenderTarget(Config.getTextureRes(), Config.getTextureRes(), TextureFormat.L8); rts.get("texpaint_blend1").image.unload(); rts.get("texpaint_blend1").raw.width = Config.getTextureRes(); rts.get("texpaint_blend1").raw.height = Config.getTextureRes(); - rts.get("texpaint_blend1").image = kha.Image.createRenderTarget(Config.getTextureRes(), Config.getTextureRes(), TextureFormat.L8); + rts.get("texpaint_blend1").image = Image.createRenderTarget(Config.getTextureRes(), Config.getTextureRes(), TextureFormat.L8); UITrait.inst.brushBlendDirty = true; g.begin(); UITrait.inst.ddirty = 2; @@ -123,11 +133,11 @@ class Layers { } public static function makePipe() { - pipe = new kha.graphics4.PipelineState(); - pipe.vertexShader = kha.graphics4.VertexShader.fromSource(ConstData.layerMergeVert); - pipe.fragmentShader = kha.graphics4.FragmentShader.fromSource(ConstData.layerMergeFrag); - var vs = new kha.graphics4.VertexStructure(); - vs.add("pos", kha.graphics4.VertexData.Float2); + pipe = new PipelineState(); + pipe.vertexShader = VertexShader.fromSource(ConstData.layerMergeVert); + pipe.fragmentShader = FragmentShader.fromSource(ConstData.layerMergeFrag); + var vs = new VertexStructure(); + vs.add("pos", VertexData.Float2); pipe.inputLayout = [vs]; pipe.compile(); tex0 = pipe.getTextureUnit("tex0"); @@ -138,21 +148,21 @@ class Layers { texc = pipe.getTextureUnit("texc"); opac = pipe.getConstantLocation("opac"); - pipeCopy = new kha.graphics4.PipelineState(); - pipeCopy.vertexShader = kha.graphics4.VertexShader.fromSource(ConstData.layerViewVert); - pipeCopy.fragmentShader = kha.graphics4.FragmentShader.fromSource(ConstData.layerViewFrag); - var vs = new kha.graphics4.VertexStructure(); - vs.add("pos", kha.graphics4.VertexData.Float3); - vs.add("tex", kha.graphics4.VertexData.Float2); - vs.add("col", kha.graphics4.VertexData.Float4); + pipeCopy = new PipelineState(); + pipeCopy.vertexShader = VertexShader.fromSource(ConstData.layerViewVert); + pipeCopy.fragmentShader = FragmentShader.fromSource(ConstData.layerViewFrag); + var vs = new VertexStructure(); + vs.add("pos", VertexData.Float3); + vs.add("tex", VertexData.Float2); + vs.add("col", VertexData.Float4); pipeCopy.inputLayout = [vs]; pipeCopy.compile(); - pipeMask = new kha.graphics4.PipelineState(); - pipeMask.vertexShader = kha.graphics4.VertexShader.fromSource(ConstData.layerMergeVert); - pipeMask.fragmentShader = kha.graphics4.FragmentShader.fromSource(ConstData.maskMergeFrag); - var vs = new kha.graphics4.VertexStructure(); - vs.add("pos", kha.graphics4.VertexData.Float2); + pipeMask = new PipelineState(); + pipeMask.vertexShader = VertexShader.fromSource(ConstData.layerMergeVert); + pipeMask.fragmentShader = FragmentShader.fromSource(ConstData.maskMergeFrag); + var vs = new VertexStructure(); + vs.add("pos", VertexData.Float2); pipeMask.inputLayout = [vs]; pipeMask.compile(); tex0Mask = pipeMask.getTextureUnit("tex0"); @@ -160,18 +170,18 @@ class Layers { } public static function makeCursorPipe() { - pipeCursor = new kha.graphics4.PipelineState(); - pipeCursor.vertexShader = kha.graphics4.VertexShader.fromSource(ConstData.cursorVert); - pipeCursor.fragmentShader = kha.graphics4.FragmentShader.fromSource(ConstData.cursorFrag); - var vs = new kha.graphics4.VertexStructure(); - vs.add("pos", kha.graphics4.VertexData.Short4Norm); - vs.add("nor", kha.graphics4.VertexData.Short2Norm); - vs.add("tex", kha.graphics4.VertexData.Short2Norm); + pipeCursor = new PipelineState(); + pipeCursor.vertexShader = VertexShader.fromSource(ConstData.cursorVert); + pipeCursor.fragmentShader = FragmentShader.fromSource(ConstData.cursorFrag); + var vs = new VertexStructure(); + vs.add("pos", VertexData.Short4Norm); + vs.add("nor", VertexData.Short2Norm); + vs.add("tex", VertexData.Short2Norm); pipeCursor.inputLayout = [vs]; - pipeCursor.blendSource = kha.graphics4.BlendingFactor.SourceAlpha; - pipeCursor.blendDestination = kha.graphics4.BlendingFactor.InverseSourceAlpha; + pipeCursor.blendSource = BlendingFactor.SourceAlpha; + pipeCursor.blendDestination = BlendingFactor.InverseSourceAlpha; pipeCursor.depthWrite = false; - pipeCursor.depthMode = kha.graphics4.CompareMode.Always; + pipeCursor.depthMode = CompareMode.Always; pipeCursor.compile(); cursorVP = pipeCursor.getConstantLocation("VP"); cursorInvVP = pipeCursor.getConstantLocation("invVP"); @@ -194,9 +204,9 @@ class Layers { imgc = null; } if (imga == null) { - imga = kha.Image.createRenderTarget(l.texpaint.width, l.texpaint.height); - imgb = kha.Image.createRenderTarget(l.texpaint.width, l.texpaint.height); - imgc = kha.Image.createRenderTarget(l.texpaint.width, l.texpaint.height); + imga = Image.createRenderTarget(l.texpaint.width, l.texpaint.height); + imgb = Image.createRenderTarget(l.texpaint.width, l.texpaint.height); + imgc = Image.createRenderTarget(l.texpaint.width, l.texpaint.height); } } @@ -213,10 +223,10 @@ class Layers { expd = null; } if (expa == null) { - expa = kha.Image.createRenderTarget(l.texpaint.width, l.texpaint.height); - expb = kha.Image.createRenderTarget(l.texpaint.width, l.texpaint.height); - expc = kha.Image.createRenderTarget(l.texpaint.width, l.texpaint.height); - expd = kha.Image.createRenderTarget(l.texpaint.width, l.texpaint.height); + expa = Image.createRenderTarget(l.texpaint.width, l.texpaint.height); + expb = Image.createRenderTarget(l.texpaint.width, l.texpaint.height); + expc = Image.createRenderTarget(l.texpaint.width, l.texpaint.height); + expd = Image.createRenderTarget(l.texpaint.width, l.texpaint.height); } } @@ -309,11 +319,11 @@ class Layers { if (first) { first = false; - arm.nodes.MaterialParser.parsePaintMaterial(); + MaterialParser.parsePaintMaterial(); } for (i in 0...fills) { - arm.render.RenderPathPaint.commandsPaint(); + RenderPathPaint.commandsPaint(); } } } diff --git a/Sources/arm/Project.hx b/Sources/arm/Project.hx index 5079c836..b2527293 100644 --- a/Sources/arm/Project.hx +++ b/Sources/arm/Project.hx @@ -1,8 +1,11 @@ package arm; +import kha.Window; import zui.Nodes; import iron.data.SceneFormat; import iron.data.MeshData; +import iron.data.Data; +import iron.Scene; import arm.util.MeshUtil; import arm.util.RenderUtil; import arm.util.ViewportUtil; @@ -14,16 +17,18 @@ import arm.ui.UIFiles; import arm.data.LayerSlot; import arm.data.BrushSlot; import arm.data.MaterialSlot; +import arm.nodes.MaterialParser; +import arm.io.ImportArm; +import arm.App; class Project { public static function projectOpen() { - arm.App.showFiles = true; - @:privateAccess zui.Ext.lastPath = ""; // Refresh - arm.App.whandle.redraws = 2; - arm.App.foldersOnly = false; - arm.App.showFilename = false; + App.showFiles = true; + App.whandle.redraws = 2; + App.foldersOnly = false; + App.showFilename = false; UIFiles.filters = "arm"; - arm.App.filesDone = function(path:String) { + App.filesDone = function(path:String) { if (!StringTools.endsWith(path, ".arm")) { UITrait.inst.showError(Strings.error5); return; @@ -32,7 +37,7 @@ class Project { var current = @:privateAccess kha.graphics4.Graphics2.current; if (current != null) current.end(); - arm.io.ImportArm.runProject(path); + ImportArm.runProject(path); if (current != null) current.begin(false); }; @@ -43,19 +48,18 @@ class Project { projectSaveAs(); return; } - kha.Window.get(0).title = arm.App.filenameHandle.text + " - ArmorPaint"; + Window.get(0).title = App.filenameHandle.text + " - ArmorPaint"; UITrait.inst.projectExport = true; } public static function projectSaveAs() { - arm.App.showFiles = true; - @:privateAccess zui.Ext.lastPath = ""; // Refresh - arm.App.whandle.redraws = 2; - arm.App.foldersOnly = true; - arm.App.showFilename = true; + App.showFiles = true; + App.whandle.redraws = 2; + App.foldersOnly = true; + App.showFilename = true; UIFiles.filters = "arm"; - arm.App.filesDone = function(path:String) { - var f = arm.App.filenameHandle.text; + App.filesDone = function(path:String) { + var f = App.filenameHandle.text; if (f == "") f = "untitled"; UITrait.inst.projectPath = path + "/" + f; if (!StringTools.endsWith(UITrait.inst.projectPath, ".arm")) UITrait.inst.projectPath += ".arm"; @@ -64,11 +68,11 @@ class Project { } public static function projectNew(resetLayers = true) { - kha.Window.get(0).title = "ArmorPaint"; + Window.get(0).title = "ArmorPaint"; UITrait.inst.projectPath = ""; if (UITrait.inst.mergedObject != null) { UITrait.inst.mergedObject.remove(); - iron.data.Data.deleteMesh(UITrait.inst.mergedObject.data.handle); + Data.deleteMesh(UITrait.inst.mergedObject.data.handle); UITrait.inst.mergedObject = null; } @@ -82,21 +86,21 @@ class Project { for (i in 1...UITrait.inst.paintObjects.length) { var p = UITrait.inst.paintObjects[i]; if (p == UITrait.inst.paintObject) continue; - iron.data.Data.deleteMesh(p.data.handle); + Data.deleteMesh(p.data.handle); p.remove(); } - var meshes = iron.Scene.active.meshes; + var meshes = Scene.active.meshes; var len = meshes.length; for (i in 0...len) { var m = meshes[len - i - 1]; if (UITrait.inst.projectObjects.indexOf(m) == -1) { - iron.data.Data.deleteMesh(m.data.handle); + Data.deleteMesh(m.data.handle); m.remove(); } } var handle = UITrait.inst.paintObject.data.handle; if (handle != "SceneSphere" && handle != "ScenePlane") { - iron.data.Data.deleteMesh(handle); + Data.deleteMesh(handle); } if (UITrait.inst.projectType > 0) { @@ -117,7 +121,7 @@ class Project { scale_tex: mesh.scaleTex }; var md = new MeshData(raw, function(md:MeshData) {}); - iron.data.Data.cachedMeshes.set("SceneTesselated", md); + Data.cachedMeshes.set("SceneTesselated", md); if (UITrait.inst.projectType == 2) { ViewportUtil.setView(0, 0, 1, 0, 0, 0); // Top @@ -126,7 +130,7 @@ class Project { } var n = UITrait.inst.projectType == 0 ? "Cube" : "Tesselated"; - iron.data.Data.getMesh("Scene", n, function(md:MeshData) { + Data.getMesh("Scene", n, function(md:MeshData) { var current = @:privateAccess kha.graphics4.Graphics2.current; if (current != null) current.end(); @@ -137,7 +141,7 @@ class Project { UITrait.inst.paintObject.transform.buildMatrix(); UITrait.inst.paintObject.name = n; UITrait.inst.paintObjects = [UITrait.inst.paintObject]; - iron.data.Data.getMaterial("Scene", "Material", function(m:iron.data.MaterialData) { + Data.getMaterial("Scene", "Material", function(m:iron.data.MaterialData) { UITrait.inst.materials = [new MaterialSlot(m)]; }); UITrait.inst.selectedMaterial = UITrait.inst.materials[0]; @@ -149,9 +153,9 @@ class Project { History.reset(); UINodes.inst.updateCanvasMap(); - arm.nodes.MaterialParser.parsePaintMaterial(); + MaterialParser.parsePaintMaterial(); RenderUtil.makeMaterialPreview(); - for (a in UITrait.inst.assets) iron.data.Data.deleteImage(a.file); + for (a in UITrait.inst.assets) Data.deleteImage(a.file); UITrait.inst.assets = []; UITrait.inst.assetNames = []; UITrait.inst.assetId = 0; diff --git a/Sources/arm/Res.hx b/Sources/arm/Res.hx index e115afee..cf354470 100644 --- a/Sources/arm/Res.hx +++ b/Sources/arm/Res.hx @@ -1,13 +1,16 @@ package arm; +import kha.Image; +import iron.data.Data; + class Res { - static var bundled:Map = new Map(); + static var bundled:Map = new Map(); public static function load(names:Array, done:Void->Void) { var loaded = 0; for (s in names) { - iron.data.Data.getImage(s, function(image:kha.Image) { + Data.getImage(s, function(image:Image) { bundled.set(s, image); loaded++; if (loaded == names.length) done(); @@ -15,7 +18,7 @@ class Res { } } - public static inline function get(name:String):kha.Image { + public static inline function get(name:String):Image { return bundled.get(name); } } diff --git a/Sources/arm/Tool.hx b/Sources/arm/Tool.hx index 67d1cfeb..86edf86a 100644 --- a/Sources/arm/Tool.hx +++ b/Sources/arm/Tool.hx @@ -1,15 +1,21 @@ package arm; +import haxe.Json; +import kha.Font; +import kha.arrays.Float32Array; import iron.RenderPath; +import iron.Scene; import iron.data.SceneFormat; +import iron.data.MaterialData; import iron.object.Object; import iron.object.MeshObject; import arm.ui.UITrait; +import arm.io.Importer; class Tool { - static function f32(ar:Array):kha.arrays.Float32Array { - var res = new kha.arrays.Float32Array(ar.length); + static function f32(ar:Array):Float32Array { + var res = new Float32Array(ar.length); for (i in 0...ar.length) res[i] = ar[i]; return res; } @@ -37,7 +43,7 @@ class Tool { instance_object: ".Particle", weight_gravity: 1 }; - iron.Scene.active.raw.particle_datas = [raw]; + Scene.active.raw.particle_datas = [raw]; var particle_refs:Array = [ { name: "Particles", @@ -56,31 +62,31 @@ class Tool { RenderPath.active.createRenderTarget(t); } - for (mat in iron.Scene.active.raw.material_datas) { + for (mat in Scene.active.raw.material_datas) { if (mat.name == 'Material2') { - var m:TMaterialData = haxe.Json.parse(haxe.Json.stringify(mat)); + var m:TMaterialData = Json.parse(Json.stringify(mat)); m.name = 'MaterialParticle'; - iron.Scene.active.raw.material_datas.push(m); + Scene.active.raw.material_datas.push(m); break; } } - iron.data.Data.getMaterial("Scene", "MaterialParticle", function(md:iron.data.MaterialData) { + iron.data.Data.getMaterial("Scene", "MaterialParticle", function(md:MaterialData) { UITrait.inst.particleMaterial = md; - for (obj in iron.Scene.active.raw.objects) { + for (obj in Scene.active.raw.objects) { if (obj.name == '.Sphere') { - var particle:TObj = haxe.Json.parse(haxe.Json.stringify(obj)); + var particle:TObj = Json.parse(Json.stringify(obj)); particle.name = '.Particle'; particle.is_particle = true; particle.material_refs = ['MaterialParticle']; - iron.Scene.active.raw.objects.push(particle); + Scene.active.raw.objects.push(particle); for (i in 0...16) particle.transform.values[i] *= 0.01; break; } } - iron.Scene.active.spawnObject(".Sphere", null, function(o:Object) { + Scene.active.spawnObject(".Sphere", null, function(o:Object) { var mo:MeshObject = cast o; mo.name = ".ParticleEmitter"; mo.raw.particle_refs = particle_refs; @@ -90,10 +96,10 @@ class Tool { } @:access(zui.Zui) - public static function getTextToolFont():kha.Font { - var fontName = arm.io.Importer.fontList[UITrait.inst.textToolHandle.position]; + public static function getTextToolFont():Font { + var fontName = Importer.fontList[UITrait.inst.textToolHandle.position]; if (fontName == 'default.ttf') return UITrait.inst.ui.ops.font; - return arm.io.Importer.fontMap.get(fontName); + return Importer.fontMap.get(fontName); } } diff --git a/Sources/arm/data/BrushSlot.hx b/Sources/arm/data/BrushSlot.hx index bb28a126..840ca389 100644 --- a/Sources/arm/data/BrushSlot.hx +++ b/Sources/arm/data/BrushSlot.hx @@ -1,6 +1,8 @@ package arm.data; +import zui.Nodes; + class BrushSlot { - public var nodes = new zui.Nodes(); + public var nodes = new Nodes(); public function new() {} } diff --git a/Sources/arm/data/LayerSlot.hx b/Sources/arm/data/LayerSlot.hx index bc688606..04a09c9e 100644 --- a/Sources/arm/data/LayerSlot.hx +++ b/Sources/arm/data/LayerSlot.hx @@ -1,7 +1,9 @@ package arm.data; import kha.graphics4.TextureFormat; +import kha.Image; import iron.RenderPath; +import iron.object.MeshObject; import arm.ui.UITrait; class LayerSlot { @@ -12,20 +14,20 @@ class LayerSlot { public var name:String; - public var texpaint:kha.Image; - public var texpaint_nor:kha.Image; - public var texpaint_pack:kha.Image; + public var texpaint:Image; + public var texpaint_nor:Image; + public var texpaint_pack:Image; - public var texpaint_preview:kha.Image; // Layer preview + public var texpaint_preview:Image; // Layer preview - public var texpaint_mask:kha.Image = null; // Texture mask - public var texpaint_mask_preview:kha.Image; + public var texpaint_mask:Image = null; // Texture mask + public var texpaint_mask_preview:Image; public var maskOpacity = 1.0; // Opacity mask public var material_mask:MaterialSlot = null; // Fill layer // For undo layer public var targetLayer:LayerSlot = null; - public var targetObject:iron.object.MeshObject = null; + public var targetObject:MeshObject = null; public var targetIsMask = false; static var first = true; @@ -42,7 +44,7 @@ class LayerSlot { public var paintSubs = true; var createMaskColor:Int; - var createMaskImage:kha.Image; + var createMaskImage:Image; public function new(ext = "") { @@ -100,7 +102,7 @@ class LayerSlot { texpaint_pack = RenderPath.active.createRenderTarget(t).image; } - texpaint_preview = kha.Image.createRenderTarget(200, 200, TextureFormat.RGBA32); + texpaint_preview = Image.createRenderTarget(200, 200, TextureFormat.RGBA32); } public function unload() { @@ -145,7 +147,7 @@ class LayerSlot { other.texpaint_mask = tp_mask; } - public function createMask(color:Int, clear = true, image:kha.Image = null) { + public function createMask(color:Int, clear = true, image:Image = null) { if (texpaint_mask != null) return; { @@ -157,7 +159,7 @@ class LayerSlot { texpaint_mask = RenderPath.active.createRenderTarget(t).image; } - texpaint_mask_preview = kha.Image.createRenderTarget(200, 200, TextureFormat.L8); + texpaint_mask_preview = Image.createRenderTarget(200, 200, TextureFormat.L8); if (clear) { createMaskColor = color; @@ -286,9 +288,9 @@ class LayerSlot { var texpaint_nor = this.texpaint_nor; var texpaint_pack = this.texpaint_pack; - this.texpaint = kha.Image.createRenderTarget(res, res, format); - this.texpaint_nor = kha.Image.createRenderTarget(res, res, format); - this.texpaint_pack = kha.Image.createRenderTarget(res, res, format); + this.texpaint = Image.createRenderTarget(res, res, format); + this.texpaint_nor = Image.createRenderTarget(res, res, format); + this.texpaint_pack = Image.createRenderTarget(res, res, format); this.texpaint.g2.begin(false); this.texpaint.g2.drawScaledImage(texpaint, 0, 0, res, res); @@ -312,7 +314,7 @@ class LayerSlot { if (this.texpaint_mask != null && this.texpaint_mask.width != res) { var texpaint_mask = this.texpaint_mask; - this.texpaint_mask = kha.Image.createRenderTarget(res, res, TextureFormat.L8); + this.texpaint_mask = Image.createRenderTarget(res, res, TextureFormat.L8); this.texpaint_mask.g2.begin(false); this.texpaint_mask.g2.drawScaledImage(texpaint_mask, 0, 0, res, res); diff --git a/Sources/arm/io/ExportArm.hx b/Sources/arm/io/ExportArm.hx index a36b9e50..f14d94b0 100644 --- a/Sources/arm/io/ExportArm.hx +++ b/Sources/arm/io/ExportArm.hx @@ -1,17 +1,21 @@ package arm.io; +import haxe.Json; +import zui.Nodes; import iron.data.SceneFormat; +import iron.system.ArmPack; import arm.ui.UITrait; import arm.ui.UINodes; import arm.util.Lz4; import arm.util.Path; import arm.Project; +import arm.App; class ExportArm { public static function run(path:String) { var raw:TSceneFormat = { mesh_datas: [ UITrait.inst.paintObject.data.raw ] }; - var b = iron.system.ArmPack.encode(raw); + var b = ArmPack.encode(raw); if (!StringTools.endsWith(path, ".arm")) path += ".arm"; #if kha_krom Krom.fileSaveBytes(path, b.getData()); @@ -19,11 +23,11 @@ class ExportArm { } public static function runProject() { - var mnodes:Array = []; - var bnodes:Array = []; + var mnodes:Array = []; + var bnodes:Array = []; for (m in UITrait.inst.materials) { - var c:zui.Nodes.TNodeCanvas = haxe.Json.parse(haxe.Json.stringify(UINodes.inst.canvasMap.get(m))); + var c:TNodeCanvas = Json.parse(Json.stringify(UINodes.inst.canvasMap.get(m))); for (n in c.nodes) { if (n.type == "TEX_IMAGE") { // Convert image path from absolute to relative var sameDrive = UITrait.inst.projectPath.charAt(0) == n.buttons[0].data.charAt(0); @@ -66,7 +70,7 @@ class ExportArm { } UITrait.inst.project = { - version: arm.App.version, + version: App.version, material_nodes: mnodes, brush_nodes: bnodes, mesh_datas: md, @@ -74,12 +78,10 @@ class ExportArm { assets: asset_files }; - var bytes = iron.system.ArmPack.encode(UITrait.inst.project); + var bytes = ArmPack.encode(UITrait.inst.project); #if kha_krom Krom.fileSaveBytes(UITrait.inst.projectPath, bytes.getData()); - #elseif kha_kore - sys.io.File.saveBytes(UITrait.inst.projectPath, bytes); #end } } diff --git a/Sources/arm/io/ExportObj.hx b/Sources/arm/io/ExportObj.hx index bc42f582..ca91f2d0 100644 --- a/Sources/arm/io/ExportObj.hx +++ b/Sources/arm/io/ExportObj.hx @@ -1,5 +1,6 @@ package arm.io; +import haxe.io.Bytes; import arm.ui.UITrait; class ExportObj { @@ -42,7 +43,7 @@ class ExportObj { } if (!StringTools.endsWith(path, ".obj")) path += ".obj"; #if kha_krom - Krom.fileSaveBytes(path, haxe.io.Bytes.ofString(s).getData()); + Krom.fileSaveBytes(path, Bytes.ofString(s).getData()); #end } } diff --git a/Sources/arm/io/Exporter.hx b/Sources/arm/io/Exporter.hx index 1aa94bff..1f6667eb 100644 --- a/Sources/arm/io/Exporter.hx +++ b/Sources/arm/io/Exporter.hx @@ -1,15 +1,19 @@ package arm.io; +import haxe.io.Bytes; +import haxe.io.BytesOutput; +import kha.Image; import iron.data.SceneFormat; import arm.ui.UITrait; import arm.ui.UIBox; +import arm.App; class Exporter { static inline var gamma = 1.0 / 2.2; - static function writeTexture(file:String, pixels:haxe.io.Bytes, type = 1, off = 0) { - var out = new haxe.io.BytesOutput(); + static function writeTexture(file:String, pixels:Bytes, type = 1, off = 0) { + var out = new BytesOutput(); var res = Config.getTextureRes(); var bitsHandle = UITrait.inst.bitsHandle.position; var bits = bitsHandle == 0 ? 8 : bitsHandle == 1 ? 16 : 32; @@ -43,15 +47,15 @@ class Exporter { public static function exportTextures(path:String) { var textureSize = Config.getTextureRes(); var formatQuality = UITrait.inst.formatQuality; - var f = arm.App.filenameHandle.text; + var f = App.filenameHandle.text; if (f == "") f = "untitled"; var formatType = UITrait.inst.formatType; var bits = UITrait.inst.bitsHandle.position == 0 ? 8 : 16; var ext = bits == 16 ? ".exr" : formatType == 0 ? ".png" : ".jpg"; if (StringTools.endsWith(f, ext)) f = f.substr(0, f.length - 4); - var texpaint:kha.Image = null; - var texpaint_nor:kha.Image = null; - var texpaint_pack:kha.Image = null; + var texpaint:Image = null; + var texpaint_nor:Image = null; + var texpaint_pack:Image = null; var layers = UITrait.inst.layers; // Export visible layers @@ -150,7 +154,7 @@ class Exporter { } } - var pixels:haxe.io.Bytes = null; + var pixels:Bytes = null; if (UITrait.inst.isBase || UITrait.inst.isOpac) { pixels = texpaint.getPixels(); // bgra @@ -171,8 +175,6 @@ class Exporter { if (UITrait.inst.isOpac) writeTexture(path + "/" + f + "_opac" + ext, pixels, 2, 3); } - - if (UITrait.inst.isNor) { pixels = texpaint_nor.getPixels(); if (UITrait.inst.isNorSpace == 1) { @@ -219,7 +221,7 @@ class Exporter { writeTexture(path + "/" + f + "_orm" + ext, pixels); } else { // Unity 5 - var pixels2 = haxe.io.Bytes.alloc(pixels.length); + var pixels2 = Bytes.alloc(pixels.length); // 8bit only for (i in 0...Std.int(pixels.length / 4)) { pixels2.set(i * 4 , pixels.get(i * 4 + 2)); @@ -240,7 +242,7 @@ class Exporter { } public static function exportMesh(path:String) { - if (UITrait.inst.exportMeshFormat == 0) arm.io.ExportObj.run(path); - else arm.io.ExportArm.run(path); + if (UITrait.inst.exportMeshFormat == 0) ExportObj.run(path); + else ExportArm.run(path); } } diff --git a/Sources/arm/io/ImportArm.hx b/Sources/arm/io/ImportArm.hx index 1196f6d1..a950f2db 100644 --- a/Sources/arm/io/ImportArm.hx +++ b/Sources/arm/io/ImportArm.hx @@ -1,6 +1,15 @@ package arm.io; +import haxe.io.Bytes; +import kha.Window; +import kha.Blob; +import kha.Image; +import iron.data.MaterialData; import iron.data.MeshData; +import iron.data.Data; +import iron.system.ArmPack; +import iron.RenderPath; +import arm.App; import arm.Project; import arm.ui.UITrait; import arm.ui.UINodes; @@ -12,40 +21,41 @@ import arm.util.MeshUtil; import arm.data.LayerSlot; import arm.data.BrushSlot; import arm.data.MaterialSlot; +import arm.nodes.MaterialParser; class ImportArm { + public static function run(project:TProjectFormat) { + new MeshData(project.mesh_datas[0], function(md:MeshData) { + UITrait.inst.paintObject.setData(md); + UITrait.inst.paintObject.transform.scale.set(1, 1, 1); + UITrait.inst.paintObject.transform.buildMatrix(); + UITrait.inst.paintObject.name = md.name; + UITrait.inst.paintObjects = [UITrait.inst.paintObject]; + iron.App.notifyOnRender(Layers.initLayers); + History.reset(); + }); + } + public static function runProject(path:String) { - iron.data.Data.getBlob(path, function(b:kha.Blob) { + Data.getBlob(path, function(b:Blob) { UITrait.inst.layersPreviewDirty = true; LayerSlot.counter = 0; - var resetLayers = false; Project.projectNew(resetLayers); UITrait.inst.projectPath = path; - arm.App.filenameHandle.text = new haxe.io.Path(UITrait.inst.projectPath).file; - - kha.Window.get(0).title = arm.App.filenameHandle.text + " - ArmorPaint"; - - var project:TProjectFormat = iron.system.ArmPack.decode(b.toBytes()); + App.filenameHandle.text = new haxe.io.Path(UITrait.inst.projectPath).file; + Window.get(0).title = App.filenameHandle.text + " - ArmorPaint"; + var project:TProjectFormat = ArmPack.decode(b.toBytes()); // Import as mesh instead if (project.version == null) { - new MeshData(project.mesh_datas[0], function(md:MeshData) { - UITrait.inst.paintObject.setData(md); - UITrait.inst.paintObject.transform.scale.set(1, 1, 1); - UITrait.inst.paintObject.transform.buildMatrix(); - UITrait.inst.paintObject.name = md.name; - UITrait.inst.paintObjects = [UITrait.inst.paintObject]; - iron.App.notifyOnRender(Layers.initLayers); - History.reset(); - }); + run(project); return; } UITrait.inst.project = project; - var base = Path.baseDir(path); for (file in project.assets) { @@ -60,19 +70,19 @@ class ImportArm { #end if (exists == 0) { UITrait.inst.showError(Strings.error2 + abs); - var b = haxe.io.Bytes.alloc(4); + var b = Bytes.alloc(4); b.set(0, 255); b.set(1, 0); b.set(2, 255); b.set(3, 255); - var pink = kha.Image.fromBytes(b, 1, 1); - iron.data.Data.cachedImages.set(abs, pink); + var pink = Image.fromBytes(b, 1, 1); + Data.cachedImages.set(abs, pink); } - arm.io.ImportTexture.run(abs); + ImportTexture.run(abs); } - var m0:iron.data.MaterialData = null; - iron.data.Data.getMaterial("Scene", "Material", function(m:iron.data.MaterialData) { + var m0:MaterialData = null; + Data.getMaterial("Scene", "Material", function(m:MaterialData) { m0 = m; }); @@ -97,7 +107,7 @@ class ImportArm { UITrait.inst.selectedMaterial = mat; UINodes.inst.updateCanvasMap(); - arm.nodes.MaterialParser.parsePaintMaterial(); + MaterialParser.parsePaintMaterial(); RenderUtil.makeMaterialPreview(); } @@ -139,15 +149,15 @@ class ImportArm { if (UITrait.inst.layers[0].texpaint.width != Config.getTextureRes()) { for (l in UITrait.inst.layers) l.resizeAndSetBits(); if (UITrait.inst.undoLayers != null) for (l in UITrait.inst.undoLayers) l.resizeAndSetBits(); - var rts = iron.RenderPath.active.renderTargets; + var rts = RenderPath.active.renderTargets; rts.get("texpaint_blend0").image.unload(); rts.get("texpaint_blend0").raw.width = Config.getTextureRes(); rts.get("texpaint_blend0").raw.height = Config.getTextureRes(); - rts.get("texpaint_blend0").image = kha.Image.createRenderTarget(Config.getTextureRes(), Config.getTextureRes(), kha.graphics4.TextureFormat.L8, kha.graphics4.DepthStencilFormat.NoDepthAndStencil); + rts.get("texpaint_blend0").image = Image.createRenderTarget(Config.getTextureRes(), Config.getTextureRes(), kha.graphics4.TextureFormat.L8, kha.graphics4.DepthStencilFormat.NoDepthAndStencil); rts.get("texpaint_blend1").image.unload(); rts.get("texpaint_blend1").raw.width = Config.getTextureRes(); rts.get("texpaint_blend1").raw.height = Config.getTextureRes(); - rts.get("texpaint_blend1").image = kha.Image.createRenderTarget(Config.getTextureRes(), Config.getTextureRes(), kha.graphics4.TextureFormat.L8, kha.graphics4.DepthStencilFormat.NoDepthAndStencil); + rts.get("texpaint_blend1").image = Image.createRenderTarget(Config.getTextureRes(), Config.getTextureRes(), kha.graphics4.TextureFormat.L8, kha.graphics4.DepthStencilFormat.NoDepthAndStencil); UITrait.inst.brushBlendDirty = true; } @@ -159,19 +169,19 @@ class ImportArm { UITrait.inst.layers.push(l); // TODO: create render target from bytes - var texpaint = kha.Image.fromBytes(Lz4.decode(ld.texpaint, ld.res * ld.res * 4), ld.res, ld.res); + var texpaint = Image.fromBytes(Lz4.decode(ld.texpaint, ld.res * ld.res * 4), ld.res, ld.res); l.texpaint.g2.begin(false); l.texpaint.g2.drawImage(texpaint, 0, 0); l.texpaint.g2.end(); // texpaint.unload(); - var texpaint_nor = kha.Image.fromBytes(Lz4.decode(ld.texpaint_nor, ld.res * ld.res * 4), ld.res, ld.res); + var texpaint_nor = Image.fromBytes(Lz4.decode(ld.texpaint_nor, ld.res * ld.res * 4), ld.res, ld.res); l.texpaint_nor.g2.begin(false); l.texpaint_nor.g2.drawImage(texpaint_nor, 0, 0); l.texpaint_nor.g2.end(); // texpaint_nor.unload(); - var texpaint_pack = kha.Image.fromBytes(Lz4.decode(ld.texpaint_pack, ld.res * ld.res * 4), ld.res, ld.res); + var texpaint_pack = Image.fromBytes(Lz4.decode(ld.texpaint_pack, ld.res * ld.res * 4), ld.res, ld.res); l.texpaint_pack.g2.begin(false); l.texpaint_pack.g2.drawImage(texpaint_pack, 0, 0); l.texpaint_pack.g2.end(); @@ -179,7 +189,7 @@ class ImportArm { if (ld.texpaint_mask != null) { l.createMask(0, false); - var texpaint_mask = kha.Image.fromBytes(Lz4.decode(ld.texpaint_mask, ld.res * ld.res), ld.res, ld.res, kha.graphics4.TextureFormat.L8); + var texpaint_mask = Image.fromBytes(Lz4.decode(ld.texpaint_mask, ld.res * ld.res), ld.res, ld.res, kha.graphics4.TextureFormat.L8); l.texpaint_mask.g2.begin(false); l.texpaint_mask.g2.drawImage(texpaint_mask, 0, 0); l.texpaint_mask.g2.end(); @@ -197,14 +207,14 @@ class ImportArm { UITrait.inst.hwnd1.redraws = 2; UITrait.inst.hwnd2.redraws = 2; - iron.data.Data.deleteBlob(path); + Data.deleteBlob(path); }); } public static function runMaterial(path:String) { - iron.data.Data.getBlob(path, function(b:kha.Blob) { - var project:TProjectFormat = iron.system.ArmPack.decode(b.toBytes()); - if (project.version == null) { iron.data.Data.deleteBlob(path); return; } + Data.getBlob(path, function(b:Blob) { + var project:TProjectFormat = ArmPack.decode(b.toBytes()); + if (project.version == null) { Data.deleteBlob(path); return; } var base = Path.baseDir(path); for (file in project.assets) { @@ -219,19 +229,19 @@ class ImportArm { #end if (exists == 0) { UITrait.inst.showError(Strings.error2 + abs); - var b = haxe.io.Bytes.alloc(4); + var b = Bytes.alloc(4); b.set(0, 255); b.set(1, 0); b.set(2, 255); b.set(3, 255); - var pink = kha.Image.fromBytes(b, 1, 1); - iron.data.Data.cachedImages.set(abs, pink); + var pink = Image.fromBytes(b, 1, 1); + Data.cachedImages.set(abs, pink); } arm.io.ImportTexture.run(abs); } - var m0:iron.data.MaterialData = null; - iron.data.Data.getMaterial("Scene", "Material", function(m:iron.data.MaterialData) { + var m0:MaterialData = null; + Data.getMaterial("Scene", "Material", function(m:MaterialData) { m0 = m; }); @@ -255,12 +265,12 @@ class ImportArm { UITrait.inst.selectedMaterial = mat; UINodes.inst.updateCanvasMap(); - arm.nodes.MaterialParser.parsePaintMaterial(); + MaterialParser.parsePaintMaterial(); RenderUtil.makeMaterialPreview(); } UITrait.inst.hwnd1.redraws = 2; - iron.data.Data.deleteBlob(path); + Data.deleteBlob(path); }); } } \ No newline at end of file diff --git a/Sources/arm/io/ImportBlend.hx b/Sources/arm/io/ImportBlend.hx index 459943e9..8111d0aa 100644 --- a/Sources/arm/io/ImportBlend.hx +++ b/Sources/arm/io/ImportBlend.hx @@ -1,9 +1,17 @@ package arm.io; +import kha.Blob; +import kha.arrays.Uint32Array; +import kha.arrays.Float32Array; +import kha.arrays.Int16Array; +import iron.data.Data; +import iron.math.Vec4; import zui.Nodes; +import arm.App; import arm.ui.UITrait; import arm.ui.UINodes; import arm.nodes.NodesMaterial; +import arm.nodes.MaterialParser; import arm.util.Path; import arm.util.RenderUtil; import arm.data.MaterialSlot; @@ -11,9 +19,12 @@ import arm.data.MaterialSlot; class ImportBlend { public static function run(path:String) { - iron.data.Data.getBlob(path, function(b:kha.Blob) { + Data.getBlob(path, function(b:Blob) { var bl = new iron.format.blend.Blend(b); - if (bl.dna == null) { Importer.makeMesh(null, path); return; } + if (bl.dna == null) { + UITrait.inst.showError("Error: Compressed blend"); + return; + } // var obs = bl.get("Object"); // var ob = obs[0]; @@ -31,20 +42,20 @@ class ImportBlend { var totloop = poly.get("totloop"); numtri += totloop == 3 ? 1 : 2; } - var inda = new kha.arrays.Uint32Array(numtri * 3); + var inda = new Uint32Array(numtri * 3); for (i in 0...inda.length) inda[i] = i; - var posa32 = new kha.arrays.Float32Array(numtri * 3 * 4); - var posa = new kha.arrays.Int16Array(numtri * 3 * 4); - var nora = new kha.arrays.Int16Array(numtri * 3 * 2); + var posa32 = new Float32Array(numtri * 3 * 4); + var posa = new Int16Array(numtri * 3 * 4); + var nora = new Int16Array(numtri * 3 * 2); var hasuv = m.get("mloopuv") != null; - var texa = hasuv ? new kha.arrays.Int16Array(numtri * 3 * 2) : null; + var texa = hasuv ? new Int16Array(numtri * 3 * 2) : null; var tri = 0; - var vec0 = new iron.math.Vec4(); - var vec1 = new iron.math.Vec4(); - var vec2 = new iron.math.Vec4(); - var vec3 = new iron.math.Vec4(); + var vec0 = new Vec4(); + var vec1 = new Vec4(); + var vec2 = new Vec4(); + var vec3 = new Vec4(); for (i in 0...totpoly) { var poly = m.get("mpoly", i); var loopstart = poly.get("loopstart"); @@ -81,9 +92,9 @@ class ImportBlend { nora[tri * 6 + 4] = Std.int(vec2.x * 32767); nora[tri * 6 + 5] = Std.int(vec2.y * 32767); - var uv0:kha.arrays.Float32Array = null; - var uv1:kha.arrays.Float32Array = null; - var uv2:kha.arrays.Float32Array = null; + var uv0:Float32Array = null; + var uv1:Float32Array = null; + var uv2:Float32Array = null; if (hasuv) { uv0 = m.get("mloopuv", loopstart ).get("uv"); uv1 = m.get("mloopuv", loopstart + 1).get("uv"); @@ -159,12 +170,12 @@ class ImportBlend { name = name.substring(2, name.length); var obj = {posa: posa, nora: nora, texa: texa, inda: inda, name: name, scalePos: scalePos, scaleTes: 1.0}; Importer.makeMesh(obj, path); - iron.data.Data.deleteBlob(path); + Data.deleteBlob(path); }); } public static function runMaterial(path:String) { - iron.data.Data.getBlob(path, function(b:kha.Blob) { + Data.getBlob(path, function(b:Blob) { var bl = new iron.format.blend.Blend(b); if (bl.dna == null) { UITrait.inst.showError("Error: Compressed blend"); @@ -256,9 +267,9 @@ class ImportBlend { var file = img.get("name").substr(2); // '//desktop\logo.png' file = StringTools.replace(file, "\\", "/"); file = Path.baseDir(path) + file; - arm.io.ImportTexture.run(file); - n.buttons[0].default_value = arm.App.getAssetIndex(file); - n.buttons[0].data = arm.App.mapEnum(arm.App.getEnumTexts()[n.buttons[0].default_value]); + ImportTexture.run(file); + n.buttons[0].default_value = App.getAssetIndex(file); + n.buttons[0].data = App.mapEnum(App.getEnumTexts()[n.buttons[0].default_value]); } var outputs = node.get("outputs"); var sock:Dynamic = outputs.get("first", 0, "bNodeSocket"); @@ -343,12 +354,12 @@ class ImportBlend { if (last.block == link.block) break; } - arm.nodes.MaterialParser.parsePaintMaterial(); + MaterialParser.parsePaintMaterial(); RenderUtil.makeMaterialPreview(); } UITrait.inst.hwnd1.redraws = 2; - iron.data.Data.deleteBlob(path); + Data.deleteBlob(path); }); } diff --git a/Sources/arm/io/ImportEnvmap.hx b/Sources/arm/io/ImportEnvmap.hx index 90506d5e..d1a11049 100644 --- a/Sources/arm/io/ImportEnvmap.hx +++ b/Sources/arm/io/ImportEnvmap.hx @@ -1,12 +1,18 @@ package arm.io; +import kha.Image; +import kha.Blob; +import kha.graphics4.TextureFormat; +import kha.arrays.Float32Array; +import iron.data.Data; +import iron.Scene; import arm.ui.UITrait; class ImportEnvmap { - public static function run(path:String, image:kha.Image) { + public static function run(path:String, image:Image) { #if kha_krom - var dataPath = iron.data.Data.dataPath; + var dataPath = Data.dataPath; var p = Krom.getFilesLocation() + '/' + dataPath; #if krom_windows var cmft = p + "/cmft.exe"; @@ -53,12 +59,10 @@ class ImportEnvmap { cmd += ' --output0 "' + tmp + 'tmp_rad"'; cmd += ' --output0params hdr,rgbe,latlong'; Krom.sysCommand(cmd); - #else - var tmp = ""; #end // Load irr - iron.data.Data.getBlob(tmp + "tmp_irr.c", function(blob:kha.Blob) { + Data.getBlob(tmp + "tmp_irr.c", function(blob:Blob) { var lines = blob.toString().split("\n"); var band0 = lines[5]; var band1 = lines[6]; @@ -70,15 +74,15 @@ class ImportEnvmap { band = StringTools.replace(band, "{", ""); band = StringTools.replace(band, "}", ""); var ar = band.split(","); - var buf = new kha.arrays.Float32Array(27); + var buf = new Float32Array(27); for (i in 0...ar.length) buf[i] = Std.parseFloat(ar[i]); - iron.Scene.active.world.probe.irradiance = buf; + Scene.active.world.probe.irradiance = buf; UITrait.inst.ddirty = 2; - iron.data.Data.deleteBlob(tmp + "tmp_irr.c"); + Data.deleteBlob(tmp + "tmp_irr.c"); }); // World envmap - iron.Scene.active.world.envmap = image; + Scene.active.world.envmap = image; UITrait.inst.savedEnvmap = image; UITrait.inst.showEnvmapHandle.selected = UITrait.inst.showEnvmap = true; @@ -86,22 +90,22 @@ class ImportEnvmap { var mips = Std.int(image.width / 1024); var mipsCount = 6 + mips; var mipsLoaded = 0; - var mips:Array = []; + var mips:Array = []; while (mips.length < mipsCount + 2) mips.push(null); var mw = Std.int(image.width / 2); var mh = Std.int(image.width / 4); for (i in 0...mipsCount) { - iron.data.Data.getImage(tmp + "tmp_rad_" + i + "_" + mw + "x" + mh + ".hdr", function(mip:kha.Image) { + Data.getImage(tmp + "tmp_rad_" + i + "_" + mw + "x" + mh + ".hdr", function(mip:Image) { mips[i] = mip; mipsLoaded++; if (mipsLoaded == mipsCount) { // 2x1 and 1x1 mips - mips[mipsCount] = kha.Image.create(2, 1, kha.graphics4.TextureFormat.RGBA128); - mips[mipsCount + 1] = kha.Image.create(1, 1, kha.graphics4.TextureFormat.RGBA128); + mips[mipsCount] = Image.create(2, 1, TextureFormat.RGBA128); + mips[mipsCount + 1] = Image.create(1, 1, TextureFormat.RGBA128); // Set radiance image.setMipmaps(mips); - iron.Scene.active.world.probe.radiance = image; - iron.Scene.active.world.probe.radianceMipmaps = mips; + Scene.active.world.probe.radiance = image; + Scene.active.world.probe.radianceMipmaps = mips; UITrait.inst.ddirty = 2; } }, true); // Readable diff --git a/Sources/arm/io/ImportFbx.hx b/Sources/arm/io/ImportFbx.hx index 6ff7bd05..97186273 100644 --- a/Sources/arm/io/ImportFbx.hx +++ b/Sources/arm/io/ImportFbx.hx @@ -1,18 +1,21 @@ package arm.io; +import kha.Blob; +import iron.data.Data; +import iron.format.fbx.FbxParser; import arm.ui.UITrait; class ImportFbx { public static function run(path:String) { - iron.data.Data.getBlob(path, function(b:kha.Blob) { - iron.format.fbx.FbxParser.parseTransform = UITrait.inst.parseTransform; - var obj = new iron.format.fbx.FbxParser(b); + Data.getBlob(path, function(b:Blob) { + FbxParser.parseTransform = UITrait.inst.parseTransform; + var obj = new FbxParser(b); Importer.makeMesh(obj, path); while (obj.next()) { Importer.addMesh(obj); } - iron.data.Data.deleteBlob(path); + Data.deleteBlob(path); }); } } diff --git a/Sources/arm/io/ImportFolder.hx b/Sources/arm/io/ImportFolder.hx index 49023ed6..03abcd78 100644 --- a/Sources/arm/io/ImportFolder.hx +++ b/Sources/arm/io/ImportFolder.hx @@ -1,13 +1,18 @@ package arm.io; +import haxe.io.Bytes; import zui.Nodes; +import iron.data.Data; +import iron.data.MaterialData; import arm.ui.UITrait; import arm.ui.UINodes; import arm.util.RenderUtil; import arm.util.Path; import arm.nodes.NodesMaterial; -import arm.Tool; +import arm.nodes.MaterialParser; import arm.data.MaterialSlot; +import arm.Tool; +import arm.App; class ImportFolder { @@ -27,7 +32,7 @@ class ImportFolder { #end save += sep + "dir.txt"; Krom.sysCommand(cmd + '"' + path + '"' + ' > ' + '"' + save + '"'); - var str = haxe.io.Bytes.ofData(Krom.loadBlob(save)).toString(); + var str = Bytes.ofData(Krom.loadBlob(save)).toString(); var files = str.split("\n"); var mapbase = ""; var mapopac = ""; @@ -80,13 +85,13 @@ class ImportFolder { valid = true; } - if (valid) arm.io.ImportTexture.run(f); + if (valid) ImportTexture.run(f); } // Create material var isScene = UITrait.inst.worktab.position == SpaceScene; if (isScene) { UITrait.inst.removeMaterialCache(); - iron.data.Data.getMaterial("Scene", "Material2", function(md:iron.data.MaterialData) { + Data.getMaterial("Scene", "Material2", function(md:MaterialData) { UITrait.inst.selectedMaterialScene = new MaterialSlot(md); UITrait.inst.materialsScene.push(UITrait.inst.selectedMaterialScene); }); @@ -107,8 +112,8 @@ class ImportFolder { var pos = 0; if (mapbase != "") { var n = NodesMaterial.createImageTexture(); - n.buttons[0].default_value = arm.App.getAssetIndex(mapbase); - n.buttons[0].data = arm.App.mapEnum(arm.App.getEnumTexts()[n.buttons[0].default_value]); + n.buttons[0].default_value = App.getAssetIndex(mapbase); + n.buttons[0].data = App.mapEnum(App.getEnumTexts()[n.buttons[0].default_value]); n.x = 72; n.y = 192 + 160 * pos; pos++; @@ -117,8 +122,8 @@ class ImportFolder { } if (mapopac != "") { var n = NodesMaterial.createImageTexture(); - n.buttons[0].default_value = arm.App.getAssetIndex(mapopac); - n.buttons[0].data = arm.App.mapEnum(arm.App.getEnumTexts()[n.buttons[0].default_value]); + n.buttons[0].default_value = App.getAssetIndex(mapopac); + n.buttons[0].data = App.mapEnum(App.getEnumTexts()[n.buttons[0].default_value]); n.x = 72; n.y = 192 + 160 * pos; pos++; @@ -127,8 +132,8 @@ class ImportFolder { } if (mapocc != "") { var n = NodesMaterial.createImageTexture(); - n.buttons[0].default_value = arm.App.getAssetIndex(mapocc); - n.buttons[0].data = arm.App.mapEnum(arm.App.getEnumTexts()[n.buttons[0].default_value]); + n.buttons[0].default_value = App.getAssetIndex(mapocc); + n.buttons[0].data = App.mapEnum(App.getEnumTexts()[n.buttons[0].default_value]); n.x = 72; n.y = 192 + 160 * pos; pos++; @@ -137,8 +142,8 @@ class ImportFolder { } if (maprough != "") { var n = NodesMaterial.createImageTexture(); - n.buttons[0].default_value = arm.App.getAssetIndex(maprough); - n.buttons[0].data = arm.App.mapEnum(arm.App.getEnumTexts()[n.buttons[0].default_value]); + n.buttons[0].default_value = App.getAssetIndex(maprough); + n.buttons[0].data = App.mapEnum(App.getEnumTexts()[n.buttons[0].default_value]); n.x = 72; n.y = 192 + 160 * pos; pos++; @@ -147,8 +152,8 @@ class ImportFolder { } if (mapmet != "") { var n = NodesMaterial.createImageTexture(); - n.buttons[0].default_value = arm.App.getAssetIndex(mapmet); - n.buttons[0].data = arm.App.mapEnum(arm.App.getEnumTexts()[n.buttons[0].default_value]); + n.buttons[0].default_value = App.getAssetIndex(mapmet); + n.buttons[0].data = App.mapEnum(App.getEnumTexts()[n.buttons[0].default_value]); n.x = 72; n.y = 192 + 160 * pos; pos++; @@ -157,8 +162,8 @@ class ImportFolder { } if (mapnor != "") { var n = NodesMaterial.createImageTexture(); - n.buttons[0].default_value = arm.App.getAssetIndex(mapnor); - n.buttons[0].data = arm.App.mapEnum(arm.App.getEnumTexts()[n.buttons[0].default_value]); + n.buttons[0].default_value = App.getAssetIndex(mapnor); + n.buttons[0].data = App.mapEnum(App.getEnumTexts()[n.buttons[0].default_value]); n.x = 72; n.y = 192 + 160 * pos; pos++; @@ -167,15 +172,15 @@ class ImportFolder { } if (mapheight != "") { var n = NodesMaterial.createImageTexture(); - n.buttons[0].default_value = arm.App.getAssetIndex(mapheight); - n.buttons[0].data = arm.App.mapEnum(arm.App.getEnumTexts()[n.buttons[0].default_value]); + n.buttons[0].default_value = App.getAssetIndex(mapheight); + n.buttons[0].data = App.mapEnum(App.getEnumTexts()[n.buttons[0].default_value]); n.x = 72; n.y = 192 + 160 * pos; pos++; var l = { id: nodes.getLinkId(canvas.links), from_id: n.id, from_socket: 0, to_id: nout.id, to_socket: 7 }; canvas.links.push(l); } - arm.nodes.MaterialParser.parsePaintMaterial(); + MaterialParser.parsePaintMaterial(); RenderUtil.makeMaterialPreview(); UITrait.inst.hwnd1.redraws = 2; #end diff --git a/Sources/arm/io/ImportFont.hx b/Sources/arm/io/ImportFont.hx index 35f64e8c..65f5ac84 100644 --- a/Sources/arm/io/ImportFont.hx +++ b/Sources/arm/io/ImportFont.hx @@ -1,9 +1,12 @@ package arm.io; +import kha.Font; +import iron.data.Data; + class ImportFont { public static function run(path:String) { - iron.data.Data.getFont(path, function(font:kha.Font) { + Data.getFont(path, function(font:Font) { var ar = path.split("/"); ar = ar[ar.length - 1].split("\\"); var name = ar[ar.length - 1]; diff --git a/Sources/arm/io/ImportGltf.hx b/Sources/arm/io/ImportGltf.hx index 60fb1ccf..28d13c71 100644 --- a/Sources/arm/io/ImportGltf.hx +++ b/Sources/arm/io/ImportGltf.hx @@ -1,12 +1,16 @@ package arm.io; +import kha.Blob; +import iron.data.Data; +import iron.format.gltf.GltfParser; + class ImportGltf { public static function run(path:String) { - iron.data.Data.getBlob(path, function(b:kha.Blob) { - var obj = new iron.format.gltf.GltfParser(b); + Data.getBlob(path, function(b:Blob) { + var obj = new GltfParser(b); Importer.makeMesh(obj, path); - iron.data.Data.deleteBlob(path); + Data.deleteBlob(path); }); } } diff --git a/Sources/arm/io/ImportObj.hx b/Sources/arm/io/ImportObj.hx index 33cecf46..26b4eb89 100644 --- a/Sources/arm/io/ImportObj.hx +++ b/Sources/arm/io/ImportObj.hx @@ -1,13 +1,16 @@ package arm.io; +import kha.Blob; +import iron.data.Data; +import iron.format.obj.ObjParser; import arm.ui.UITrait; class ImportObj { public static function run(path:String) { - iron.data.Data.getBlob(path, function(b:kha.Blob) { + Data.getBlob(path, function(b:Blob) { if (UITrait.inst.isUdim) { - var obj = new iron.format.obj.ObjParser(b, 0, UITrait.inst.isUdim); + var obj = new ObjParser(b, 0, UITrait.inst.isUdim); var name = obj.name; for (i in 0...obj.udims.length) { var u = i % obj.udimsU; @@ -18,14 +21,14 @@ class ImportObj { } } else { - var obj = new iron.format.obj.ObjParser(b); + var obj = new ObjParser(b); Importer.makeMesh(obj, path); while (obj.hasNext) { - obj = new iron.format.obj.ObjParser(b, obj.pos); + obj = new ObjParser(b, obj.pos); Importer.addMesh(obj); } } - iron.data.Data.deleteBlob(path); + Data.deleteBlob(path); }); } } diff --git a/Sources/arm/io/ImportTexture.hx b/Sources/arm/io/ImportTexture.hx index ebfa71ec..c0661987 100644 --- a/Sources/arm/io/ImportTexture.hx +++ b/Sources/arm/io/ImportTexture.hx @@ -1,6 +1,8 @@ package arm.io; +import kha.Image; import zui.Canvas; +import iron.data.Data; import arm.ui.UITrait; import arm.util.Path; @@ -14,7 +16,7 @@ class ImportTexture { for (a in UITrait.inst.assets) if (a.file == path) { UITrait.inst.showMessage(Strings.info0); return; } - iron.data.Data.getImage(path, function(image:kha.Image) { + Data.getImage(path, function(image:Image) { var ar = path.split("/"); ar = ar[ar.length - 1].split("\\"); var name = ar[ar.length - 1]; @@ -28,7 +30,7 @@ class ImportTexture { // Set envmap if (StringTools.endsWith(path.toLowerCase(), ".hdr") && (image.width == 1024 || image.width == 2048 || image.width == 4096)) { - arm.io.ImportEnvmap.run(path, image); + ImportEnvmap.run(path, image); } }); } diff --git a/Sources/arm/io/Importer.hx b/Sources/arm/io/Importer.hx index 4b9c2581..d66d9240 100644 --- a/Sources/arm/io/Importer.hx +++ b/Sources/arm/io/Importer.hx @@ -1,16 +1,17 @@ package arm.io; -import zui.Canvas; -import zui.Nodes; +import kha.Font; +import kha.arrays.Int16Array; import iron.data.SceneFormat; import iron.data.MeshData; -import arm.util.RenderUtil; +import iron.data.Data; +import iron.math.Vec4; +import iron.Scene; import arm.util.MeshUtil; import arm.util.UVUtil; import arm.util.ViewportUtil; import arm.util.Path; import arm.ui.UITrait; -import arm.ui.UIBox; import arm.ui.UIView2D; import arm.ui.UINodes; import arm.Project; @@ -19,7 +20,7 @@ import arm.Tool; class Importer { public static var fontList = ["default.ttf"]; - public static var fontMap = new Map(); + public static var fontMap = new Map(); public static function importFile(path:String, dropX = -1.0, dropY = -1.0) { // Mesh @@ -28,7 +29,7 @@ class Importer { } // Image else if (Path.checkTextureFormat(path)) { - arm.io.ImportTexture.run(path); + ImportTexture.run(path); // Place image node var x0 = UINodes.inst.wx; var x1 = UINodes.inst.wx + UINodes.inst.ww; @@ -40,15 +41,15 @@ class Importer { } // Font else if (Path.checkFontFormat(path)) { - arm.io.ImportFont.run(path); + ImportFont.run(path); } // Project else if (Path.checkProjectFormat(path)) { - arm.io.ImportArm.runProject(path); + ImportArm.runProject(path); } // Folder else if (path.indexOf(".") == -1) { - arm.io.ImportFolder.run(path); + ImportFolder.run(path); } else { UITrait.inst.showError(Strings.error1); @@ -66,14 +67,14 @@ class Importer { #end var p = path.toLowerCase(); - if (StringTools.endsWith(p, ".obj")) arm.io.ImportObj.run(path); - else if (StringTools.endsWith(p, ".gltf")) arm.io.ImportGltf.run(path); - else if (StringTools.endsWith(p, ".fbx")) arm.io.ImportFbx.run(path); - else if (StringTools.endsWith(p, ".blend")) arm.io.ImportBlend.run(path); + if (StringTools.endsWith(p, ".obj")) ImportObj.run(path); + else if (StringTools.endsWith(p, ".gltf")) ImportGltf.run(path); + else if (StringTools.endsWith(p, ".fbx")) ImportFbx.run(path); + else if (StringTools.endsWith(p, ".blend")) ImportBlend.run(path); if (UITrait.inst.mergedObject != null) { UITrait.inst.mergedObject.remove(); - iron.data.Data.deleteMesh(UITrait.inst.mergedObject.data.handle); + Data.deleteMesh(UITrait.inst.mergedObject.data.handle); UITrait.inst.mergedObject = null; } @@ -131,8 +132,8 @@ class Importer { if (mesh.texa == null) { UITrait.inst.showError(Strings.error4); var verts = Std.int(mesh.posa.length / 4); - mesh.texa = new kha.arrays.Int16Array(verts * 2); - var n = new iron.math.Vec4(); + mesh.texa = new Int16Array(verts * 2); + var n = new Vec4(); for (i in 0...verts) { n.set(mesh.posa[i * 4] / 32767, mesh.posa[i * 4 + 1] / 32767, mesh.posa[i * 4 + 2] / 32767).normalize(); // Sphere projection @@ -164,7 +165,7 @@ class Importer { if (UITrait.inst.worktab.position == SpaceScene) { var mats = new haxe.ds.Vector(1); mats[0] = UITrait.inst.selectedMaterialScene.data; - var object = iron.Scene.active.addMeshObject(md, mats, iron.Scene.active.getChild("Scene")); + var object = Scene.active.addMeshObject(md, mats, Scene.active.getChild("Scene")); path = StringTools.replace(path, "\\", "/"); var ar = path.split("/"); var s = ar[ar.length - 1]; @@ -191,12 +192,12 @@ class Importer { for (i in 0...UITrait.inst.paintObjects.length) { var p = UITrait.inst.paintObjects[i]; if (p == UITrait.inst.paintObject) continue; - iron.data.Data.deleteMesh(p.data.handle); + Data.deleteMesh(p.data.handle); p.remove(); } var handle = UITrait.inst.paintObject.data.handle; if (handle != "SceneSphere" && handle != "ScenePlane") { - iron.data.Data.deleteMesh(handle); + Data.deleteMesh(handle); } while (UITrait.inst.layers.length > 1) { var l = UITrait.inst.layers.pop(); l.unload(); } @@ -231,8 +232,8 @@ class Importer { if (mesh.texa == null) { UITrait.inst.showError(Strings.error4); var verts = Std.int(mesh.posa.length / 4); - mesh.texa = new kha.arrays.Int16Array(verts * 2); - var n = new iron.math.Vec4(); + mesh.texa = new Int16Array(verts * 2); + var n = new Vec4(); for (i in 0...verts) { n.set(mesh.posa[i * 4] / 32767, mesh.posa[i * 4 + 1] / 32767, mesh.posa[i * 4 + 2] / 32767).normalize(); // Sphere projection @@ -259,7 +260,7 @@ class Importer { new MeshData(raw, function(md:MeshData) { - var object = iron.Scene.active.addMeshObject(md, UITrait.inst.paintObject.materials, UITrait.inst.paintObject); + var object = Scene.active.addMeshObject(md, UITrait.inst.paintObject.materials, UITrait.inst.paintObject); object.name = mesh.name; object.skip_context = "paint"; diff --git a/Sources/arm/nodes/MaterialBuilder.hx b/Sources/arm/nodes/MaterialBuilder.hx index 96690b16..43166e5b 100644 --- a/Sources/arm/nodes/MaterialBuilder.hx +++ b/Sources/arm/nodes/MaterialBuilder.hx @@ -2,7 +2,7 @@ package arm.nodes; import armory.system.Cycles; import armory.system.CyclesShader; -import armory.system.CyclesShader.CyclesShaderContext; +import armory.system.CyclesFunctions; import iron.data.SceneFormat; import arm.ui.UITrait; import arm.ui.UINodes; @@ -199,7 +199,7 @@ class MaterialBuilder { frag.wposition = true; if (UITrait.inst.brushAngleReject || UITrait.inst.xray) { - frag.add_function(armory.system.CyclesFunctions.str_octahedronWrap); + frag.add_function(CyclesFunctions.str_octahedronWrap); frag.add_uniform('sampler2D gbuffer0'); #if (kha_opengl || kha_webgl) frag.write('vec2 g0 = textureLod(gbuffer0, vec2(inp.x, 1.0 - inp.y), 0.0).rg;'); @@ -268,7 +268,7 @@ class MaterialBuilder { var angleFill = UITrait.inst.selectedTool == ToolFill && UITrait.inst.fillTypeHandle.position == 2; if (angleFill) { - frag.add_function(armory.system.CyclesFunctions.str_octahedronWrap); + frag.add_function(CyclesFunctions.str_octahedronWrap); frag.add_uniform('sampler2D gbuffer0'); frag.write('vec2 g0 = textureLod(gbuffer0, inp.xy, 0.0).rg;'); frag.write('vec3 wn;'); @@ -639,7 +639,7 @@ class MaterialBuilder { if (UITrait.inst.bakeType == 0) { // AO // Apply normal channel frag.vVec = true; - frag.add_function(armory.system.CyclesFunctions.str_cotangentFrame); + frag.add_function(CyclesFunctions.str_cotangentFrame); #if kha_direct3d11 frag.write('mat3 TBN = cotangentFrame(n, vVec, texCoord);'); #else @@ -652,7 +652,7 @@ class MaterialBuilder { frag.write('const vec3 voxelgiHalfExtents = vec3(1.0, 1.0, 1.0);'); frag.write('vec3 voxpos = wposition / voxelgiHalfExtents;'); frag.add_uniform('sampler3D voxels'); - frag.add_function(armory.system.CyclesFunctions.str_traceAO); + frag.add_function(CyclesFunctions.str_traceAO); frag.n = true; var strength = UITrait.inst.bakeStrength; var radius = UITrait.inst.bakeRadius; @@ -745,10 +745,10 @@ class MaterialBuilder { frag.add_out('vec4 fragColor[3]'); frag.n = true; - frag.add_function(armory.system.CyclesFunctions.str_packFloat); - frag.add_function(armory.system.CyclesFunctions.str_packFloat2); - frag.add_function(armory.system.CyclesFunctions.str_cotangentFrame); - frag.add_function(armory.system.CyclesFunctions.str_octahedronWrap); + frag.add_function(CyclesFunctions.str_packFloat); + frag.add_function(CyclesFunctions.str_packFloat2); + frag.add_function(CyclesFunctions.str_cotangentFrame); + frag.add_function(CyclesFunctions.str_octahedronWrap); // Apply normal channel if (decal) { @@ -914,8 +914,8 @@ class MaterialBuilder { frag.add_out('vec4 fragColor[3]'); frag.n = true; - frag.add_function(armory.system.CyclesFunctions.str_packFloat); - frag.add_function(armory.system.CyclesFunctions.str_packFloat2); + frag.add_function(CyclesFunctions.str_packFloat); + frag.add_function(CyclesFunctions.str_packFloat2); if (UITrait.inst.selectedTool == ToolColorId) { frag.add_uniform('sampler2D texcolorid', '_texcolorid'); @@ -924,7 +924,7 @@ class MaterialBuilder { frag.write('fragColor[1] = vec4(idcol.rgb, packFloat2(1.0, 1.0));'); // occ/spec } else { - frag.add_function(armory.system.CyclesFunctions.str_octahedronWrap); + frag.add_function(CyclesFunctions.str_octahedronWrap); frag.write('vec3 basecol;'); frag.write('float roughness;'); @@ -935,7 +935,7 @@ class MaterialBuilder { frag.write('float matid = 0.0;'); frag.vVec = true; - frag.add_function(armory.system.CyclesFunctions.str_cotangentFrame); + frag.add_function(CyclesFunctions.str_cotangentFrame); #if kha_direct3d11 frag.write('mat3 TBN = cotangentFrame(n, vVec, texCoord);'); #else @@ -1187,7 +1187,6 @@ class MaterialBuilder { con_mesh.data.shader_from_source = true; con_mesh.data.vertex_shader = vert.get(); con_mesh.data.fragment_shader = frag.get(); - return con_mesh; } diff --git a/Sources/arm/nodes/MaterialParser.hx b/Sources/arm/nodes/MaterialParser.hx index 6cb7390a..d0cdaf3d 100644 --- a/Sources/arm/nodes/MaterialParser.hx +++ b/Sources/arm/nodes/MaterialParser.hx @@ -1,7 +1,7 @@ package arm.nodes; import iron.data.SceneFormat; -import iron.data.ShaderData.ShaderContext; +import iron.data.ShaderData; import iron.data.MaterialData; import armory.system.CyclesFormat; import armory.system.CyclesShader; @@ -14,7 +14,6 @@ class MaterialParser { static var sc:ShaderContext = null; static var _matcon:TMaterialContext = null; static var _materialcontext:MaterialContext = null; - static var lastT:iron.Trait = null; static function getMOut():Bool { for (n in UINodes.inst.canvas.nodes) if (n.type == "OUTPUT_MATERIAL_PBR") return true; @@ -44,7 +43,7 @@ class MaterialParser { if (MaterialBuilder.heightUsed && armory.data.Config.raw.rp_gi != false) { var sc:ShaderContext = null; for (c in m.shader.contexts) if (c.raw.name == "voxel") { sc = c; break; } - if (sc != null )MaterialBuilder.make_voxel(sc); + if (sc != null) MaterialBuilder.make_voxel(sc); } #end // }); diff --git a/Sources/arm/plugin/Console.hx b/Sources/arm/plugin/Console.hx index 846d4ff5..106e7ae8 100644 --- a/Sources/arm/plugin/Console.hx +++ b/Sources/arm/plugin/Console.hx @@ -1,5 +1,6 @@ package arm.plugin; +import kha.Image; import kha.Scheduler; import zui.Zui; import zui.Id; @@ -12,9 +13,9 @@ class Console { static var totalTime = 0.0; static var frames = 0; static var frameTimeAvg = 0.0; - static var graph:kha.Image = null; - static var graphA:kha.Image = null; - static var graphB:kha.Image = null; + static var graph:Image = null; + static var graphA:Image = null; + static var graphB:Image = null; static var lrow = [1/2, 1/2]; static var haxeTrace:Dynamic->haxe.PosInfos->Void = null; static var lastTraces:Array = ['']; @@ -27,8 +28,8 @@ class Console { static function updateGraph() { if (graph == null) { - graphA = kha.Image.createRenderTarget(280, 33); - graphB = kha.Image.createRenderTarget(280, 33); + graphA = Image.createRenderTarget(280, 33); + graphB = Image.createRenderTarget(280, 33); graph = graphA; } else graph = graph == graphA ? graphB : graphA; diff --git a/Sources/arm/plugin/Gizmo.hx b/Sources/arm/plugin/Gizmo.hx index 51759acb..b2ee2832 100644 --- a/Sources/arm/plugin/Gizmo.hx +++ b/Sources/arm/plugin/Gizmo.hx @@ -1,6 +1,11 @@ package arm.plugin; import iron.object.MeshObject; +import iron.object.LightObject; +import iron.system.Input; +import iron.math.RayCaster; +import iron.math.Vec4; +import iron.Scene; import arm.ui.UITrait; class Gizmo { @@ -14,27 +19,27 @@ class Gizmo { gizmo.transform.buildMatrix(); } - var mouse = iron.system.Input.getMouse(); - var kb = iron.system.Input.getKeyboard(); + var mouse = Input.getMouse(); + var kb = Input.getKeyboard(); if (mouse.x < App.w()) { if (kb.started("delete") || kb.started("backspace")) { if (UITrait.inst.selectedObject != null) { UITrait.inst.selectedObject.remove(); - UITrait.inst.selectObject(iron.Scene.active.getChild("Scene")); + UITrait.inst.selectObject(Scene.active.getChild("Scene")); } } if (kb.started("c") && UITrait.inst.selectedObject != null) { if (Std.is(UITrait.inst.selectedObject, MeshObject)) { var mo = cast(UITrait.inst.selectedObject, MeshObject); - var object = iron.Scene.active.addMeshObject(mo.data, mo.materials, iron.Scene.active.getChild("Scene")); + 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 = iron.math.RayCaster.planeIntersect(iron.math.Vec4.zAxis(), new iron.math.Vec4(), mouse.x, mouse.y, iron.Scene.active.camera); + var hit = RayCaster.planeIntersect(Vec4.zAxis(), new Vec4(), mouse.x, mouse.y, Scene.active.camera); if (hit != null) { object.transform.loc.x = hit.x; object.transform.loc.y = hit.y; @@ -49,9 +54,9 @@ class Gizmo { UITrait.inst.selectObject(object); } - else if (Std.is(UITrait.inst.selectedObject, iron.object.LightObject)) { - var lo = cast(UITrait.inst.selectedObject, iron.object.LightObject); - var object = iron.Scene.active.addLightObject(lo.data, iron.Scene.active.getChild("Scene")); + else if (Std.is(UITrait.inst.selectedObject, LightObject)) { + var lo = cast(UITrait.inst.selectedObject, LightObject); + var object = Scene.active.addLightObject(lo.data, Scene.active.getChild("Scene")); object.name = lo.name + '.1'; object.transform.loc.setFrom(lo.transform.loc); @@ -83,7 +88,7 @@ class Gizmo { if (mouse.started("left") && UITrait.inst.selectedObject.name != "Scene") { gizmo.transform.buildMatrix(); var trs = [UITrait.inst.gizmoX.transform, UITrait.inst.gizmoY.transform, UITrait.inst.gizmoZ.transform]; - var hit = iron.math.RayCaster.closestBoxIntersect(trs, mouse.x, mouse.y, iron.Scene.active.camera); + var hit = RayCaster.closestBoxIntersect(trs, mouse.x, mouse.y, Scene.active.camera); if (hit != null) { if (hit.object == UITrait.inst.gizmoX) UITrait.inst.axisX = true; else if (hit.object == UITrait.inst.gizmoY) UITrait.inst.axisY = true; @@ -97,11 +102,11 @@ class Gizmo { if (UITrait.inst.axisX || UITrait.inst.axisY || UITrait.inst.axisZ) { var t = UITrait.inst.selectedObject.transform; - var v = new iron.math.Vec4(); + var v = new Vec4(); v.set(t.worldx(), t.worldy(), t.worldz()); if (UITrait.inst.axisX) { - var hit = iron.math.RayCaster.planeIntersect(iron.math.Vec4.yAxis(), v, mouse.x, mouse.y, iron.Scene.active.camera); + var hit = RayCaster.planeIntersect(Vec4.yAxis(), v, mouse.x, mouse.y, Scene.active.camera); if (hit != null) { if (UITrait.inst.axisStart == 0) UITrait.inst.axisStart = hit.x - UITrait.inst.selectedObject.transform.loc.x; UITrait.inst.selectedObject.transform.loc.x = hit.x - UITrait.inst.axisStart; @@ -113,7 +118,7 @@ class Gizmo { } } else if (UITrait.inst.axisY) { - var hit = iron.math.RayCaster.planeIntersect(iron.math.Vec4.xAxis(), v, mouse.x, mouse.y, iron.Scene.active.camera); + var hit = RayCaster.planeIntersect(Vec4.xAxis(), v, mouse.x, mouse.y, Scene.active.camera); if (hit != null) { if (UITrait.inst.axisStart == 0) UITrait.inst.axisStart = hit.y - UITrait.inst.selectedObject.transform.loc.y; UITrait.inst.selectedObject.transform.loc.y = hit.y - UITrait.inst.axisStart; @@ -125,7 +130,7 @@ class Gizmo { } } else if (UITrait.inst.axisZ) { - var hit = iron.math.RayCaster.planeIntersect(iron.math.Vec4.xAxis(), v, mouse.x, mouse.y, iron.Scene.active.camera); + var hit = RayCaster.planeIntersect(Vec4.xAxis(), v, mouse.x, mouse.y, Scene.active.camera); if (hit != null) { if (UITrait.inst.axisStart == 0) UITrait.inst.axisStart = hit.z - UITrait.inst.selectedObject.transform.loc.z; UITrait.inst.selectedObject.transform.loc.z = hit.z - UITrait.inst.axisStart; @@ -138,6 +143,6 @@ class Gizmo { } } - iron.system.Input.occupied = (UITrait.inst.axisX || UITrait.inst.axisY || UITrait.inst.axisZ) && mouse.x < App.w(); + Input.occupied = (UITrait.inst.axisX || UITrait.inst.axisY || UITrait.inst.axisZ) && mouse.x < App.w(); } } diff --git a/Sources/arm/render/RenderPathDeferred.hx b/Sources/arm/render/RenderPathDeferred.hx index 51cc6baa..d54883f1 100644 --- a/Sources/arm/render/RenderPathDeferred.hx +++ b/Sources/arm/render/RenderPathDeferred.hx @@ -1,8 +1,16 @@ package arm.render; +import kha.System; import iron.RenderPath; +import iron.Scene; +import iron.math.Mat4; +import iron.math.Vec4; +import iron.math.Quat; +import iron.system.Input; +import iron.object.MeshObject; import armory.renderpath.Inc; import arm.util.ViewportUtil; +import arm.util.RenderUtil; import arm.ui.UITrait; import arm.ui.UIView2D; @@ -17,6 +25,8 @@ class RenderPathDeferred { static var voxelsLast = "voxels"; #end static var taaFrame = 0; + static var lastX = -1.0; + static var lastY = -1.0; public static function init(_path:RenderPath) { @@ -94,8 +104,8 @@ class RenderPathDeferred { var t = new RenderTargetRaw(); t.name = "mtex"; - t.width = arm.util.RenderUtil.matPreviewSize; - t.height = arm.util.RenderUtil.matPreviewSize; + t.width = RenderUtil.matPreviewSize; + t.height = RenderUtil.matPreviewSize; t.format = Inc.getHdrFormat(); t.scale = Inc.getSuperSampling(); t.depth_buffer = "mmain"; @@ -105,8 +115,8 @@ class RenderPathDeferred { { var t = new RenderTargetRaw(); t.name = "mbuf"; - t.width = arm.util.RenderUtil.matPreviewSize; - t.height = arm.util.RenderUtil.matPreviewSize; + t.width = RenderUtil.matPreviewSize; + t.height = RenderUtil.matPreviewSize; t.format = Inc.getHdrFormat(); t.scale = Inc.getSuperSampling(); path.createRenderTarget(t); @@ -115,8 +125,8 @@ class RenderPathDeferred { { var t = new RenderTargetRaw(); t.name = "mgbuffer0"; - t.width = arm.util.RenderUtil.matPreviewSize; - t.height = arm.util.RenderUtil.matPreviewSize; + t.width = RenderUtil.matPreviewSize; + t.height = RenderUtil.matPreviewSize; t.format = "RGBA64"; t.scale = Inc.getSuperSampling(); t.depth_buffer = "mmain"; @@ -126,8 +136,8 @@ class RenderPathDeferred { { var t = new RenderTargetRaw(); t.name = "mgbuffer1"; - t.width = arm.util.RenderUtil.matPreviewSize; - t.height = arm.util.RenderUtil.matPreviewSize; + t.width = RenderUtil.matPreviewSize; + t.height = RenderUtil.matPreviewSize; t.format = "RGBA64"; t.scale = Inc.getSuperSampling(); path.createRenderTarget(t); @@ -137,8 +147,8 @@ class RenderPathDeferred { { var t = new RenderTargetRaw(); t.name = "mgbuffer2"; - t.width = arm.util.RenderUtil.matPreviewSize; - t.height = arm.util.RenderUtil.matPreviewSize; + t.width = RenderUtil.matPreviewSize; + t.height = RenderUtil.matPreviewSize; t.format = "RGBA64"; t.scale = Inc.getSuperSampling(); path.createRenderTarget(t); @@ -149,8 +159,8 @@ class RenderPathDeferred { { var t = new RenderTargetRaw(); t.name = "mbufa"; - t.width = arm.util.RenderUtil.matPreviewSize; - t.height = arm.util.RenderUtil.matPreviewSize; + t.width = RenderUtil.matPreviewSize; + t.height = RenderUtil.matPreviewSize; t.format = "RGBA32"; t.scale = Inc.getSuperSampling(); path.createRenderTarget(t); @@ -158,8 +168,8 @@ class RenderPathDeferred { { var t = new RenderTargetRaw(); t.name = "mbufb"; - t.width = arm.util.RenderUtil.matPreviewSize; - t.height = arm.util.RenderUtil.matPreviewSize; + t.width = RenderUtil.matPreviewSize; + t.height = RenderUtil.matPreviewSize; t.format = "RGBA32"; t.scale = Inc.getSuperSampling(); path.createRenderTarget(t); @@ -169,17 +179,14 @@ class RenderPathDeferred { // } - static var lastX = -1.0; - static var lastY = -1.0; - @:access(iron.RenderPath) public static function commands() { - if (kha.System.windowWidth() == 0 || kha.System.windowHeight() == 0) return; + if (System.windowWidth() == 0 || System.windowHeight() == 0) return; var ssaa4 = armory.data.Config.raw.rp_supersample == 4 ? true : false; - var mouse = iron.system.Input.getMouse(); + var mouse = Input.getMouse(); var mx = lastX; var my = lastY; lastX = mouse.x; @@ -200,8 +207,8 @@ class RenderPathDeferred { } // Match projection matrix jitter - @:privateAccess iron.Scene.active.camera.frame = taaFrame; - @:privateAccess iron.Scene.active.camera.projectionJitter(); + @:privateAccess Scene.active.camera.frame = taaFrame; + @:privateAccess Scene.active.camera.projectionJitter(); var tid = UITrait.inst.selectedLayer.id; @@ -237,8 +244,8 @@ class RenderPathDeferred { } // 2D paint - var painto:iron.object.MeshObject = null; - var planeo:iron.object.MeshObject = null; + var painto:MeshObject = null; + var planeo:MeshObject = null; var visibles:Array = null; var mergedObjectVisible = false; var savedFov = 0.0; @@ -255,11 +262,11 @@ class RenderPathDeferred { UITrait.inst.mergedObject.visible = false; } - var cam = iron.Scene.active.camera; + var cam = Scene.active.camera; UITrait.inst.savedCamera.setFrom(cam.transform.local); savedFov = cam.data.raw.fov; ViewportUtil.updateCameraType(0); - var m = iron.math.Mat4.identity(); + var m = Mat4.identity(); m.translate(0, 0, 0.5); cam.transform.setMatrix(m); cam.data.raw.fov = 0.92; @@ -271,17 +278,17 @@ class RenderPathDeferred { var ty = UIView2D.inst.panY / iron.App.h(); m.setIdentity(); - m.scale(new iron.math.Vec4(tw, tw, 1)); - m.setLoc(new iron.math.Vec4(tx, ty, 0)); - var m2 = iron.math.Mat4.identity(); - m2.getInverse(iron.Scene.active.camera.VP); + m.scale(new Vec4(tw, tw, 1)); + m.setLoc(new Vec4(tx, ty, 0)); + var m2 = Mat4.identity(); + m2.getInverse(Scene.active.camera.VP); m.multmat(m2); - planeo = cast iron.Scene.active.getChild(".Plane"); + planeo = cast Scene.active.getChild(".Plane"); planeo.visible = true; UITrait.inst.paintObject = planeo; - var v = new iron.math.Vec4(); + var v = new Vec4(); var sx = v.set(m._00, m._01, m._02).length(); planeo.transform.rot.fromEuler(-Math.PI / 2, 0, 0); planeo.transform.scale.set(sx, 1.0, sx); @@ -361,11 +368,11 @@ class RenderPathDeferred { UITrait.inst.mergedObject.visible = mergedObjectVisible; } UITrait.inst.paintObject = painto; - iron.Scene.active.camera.transform.setMatrix(UITrait.inst.savedCamera); - iron.Scene.active.camera.data.raw.fov = savedFov; + Scene.active.camera.transform.setMatrix(UITrait.inst.savedCamera); + Scene.active.camera.data.raw.fov = savedFov; ViewportUtil.updateCameraType(UITrait.inst.cameraType); - iron.Scene.active.camera.buildProjection(); - iron.Scene.active.camera.buildMatrix(); + Scene.active.camera.buildProjection(); + Scene.active.camera.buildMatrix(); drawGbuffer(); } @@ -490,7 +497,7 @@ class RenderPathDeferred { #if rp_translucency { - var hasLight = iron.Scene.active.lights.length > 0; + var hasLight = Scene.active.lights.length > 0; if (hasLight) Inc.drawTranslucency("tex"); } #end @@ -631,9 +638,9 @@ class RenderPathDeferred { path.drawMeshes("overlay"); if (UITrait.inst.showCompass) { - var scene = iron.Scene.active; - var cam = iron.Scene.active.camera; - var gizmo:iron.object.MeshObject = cast scene.getChild(".GizmoTranslate"); + var scene = Scene.active; + var cam = Scene.active.camera; + var gizmo:MeshObject = cast scene.getChild(".GizmoTranslate"); var visible = gizmo.visible; var parent = gizmo.parent; @@ -642,11 +649,11 @@ class RenderPathDeferred { var crot = cam.transform.rot; var ratio = iron.App.w() / iron.App.h(); var P = cam.P; - cam.P = iron.math.Mat4.ortho(-8 * ratio, 8 * ratio, -8, 8, -2, 2); + cam.P = Mat4.ortho(-8 * ratio, 8 * ratio, -8, 8, -2, 2); gizmo.visible = true; gizmo.parent = cam; - gizmo.transform.loc = new iron.math.Vec4(7.2 * ratio, -7.6, -1); - gizmo.transform.rot = new iron.math.Quat(-crot.x, -crot.y, -crot.z, crot.w); + gizmo.transform.loc = new Vec4(7.2 * ratio, -7.6, -1); + gizmo.transform.rot = new Quat(-crot.x, -crot.y, -crot.z, crot.w); gizmo.transform.buildMatrix(); gizmo.render(currentG, "overlay", []); @@ -673,36 +680,23 @@ class RenderPathDeferred { path.bindTarget("bufa", "edgesTex"); path.drawShader("shader_datas/smaa_blend_weight/smaa_blend_weight"); - // #if (rp_antialiasing == "TAA") path.setTarget("bufa"); - // #else - // path.setTarget(""); - // #end path.bindTarget("buf", "colorTex"); path.bindTarget("bufb", "blendTex"); - // #if (rp_antialiasing == "TAA") - // { - path.bindTarget("gbuffer2", "sveloc"); - // } - // #end + path.bindTarget("gbuffer2", "sveloc"); path.drawShader("shader_datas/smaa_neighborhood_blend/smaa_neighborhood_blend"); - // #if (rp_antialiasing == "TAA") - // { - path.setTarget(taaFrame % 2 == 0 ? "taa2" : "taa"); - path.bindTarget(taaFrame % 2 == 0 ? "taa" : "taa2", "tex2"); - path.bindTarget("bufa", "tex"); - path.bindTarget("gbuffer2", "sveloc"); - path.drawShader("shader_datas/taa_pass/taa_pass"); - if (!ssaa4) { - path.setTarget(""); - if (taaFrame == 0) path.bindTarget("bufa", "tex"); - else path.bindTarget(taaFrame % 2 == 0 ? "taa2" : "taa", "tex"); - path.drawShader("shader_datas/copy_pass/copy_pass"); - } - - // } - // #end + path.setTarget(taaFrame % 2 == 0 ? "taa2" : "taa"); + path.bindTarget(taaFrame % 2 == 0 ? "taa" : "taa2", "tex2"); + path.bindTarget("bufa", "tex"); + path.bindTarget("gbuffer2", "sveloc"); + path.drawShader("shader_datas/taa_pass/taa_pass"); + if (!ssaa4) { + path.setTarget(""); + if (taaFrame == 0) path.bindTarget("bufa", "tex"); + else path.bindTarget(taaFrame % 2 == 0 ? "taa2" : "taa", "tex"); + path.drawShader("shader_datas/copy_pass/copy_pass"); + } } #end diff --git a/Sources/arm/render/RenderPathPaint.hx b/Sources/arm/render/RenderPathPaint.hx index d9aae2aa..70865430 100644 --- a/Sources/arm/render/RenderPathPaint.hx +++ b/Sources/arm/render/RenderPathPaint.hx @@ -1,5 +1,7 @@ package arm.render; +import iron.object.MeshObject; +import iron.Scene; import armory.renderpath.Inc; import arm.ui.UITrait; import arm.Tool; @@ -21,12 +23,12 @@ class RenderPathPaint { path.bindTarget("_main", "gbufferD"); if ((UITrait.inst.xray || UITrait.inst.brushAngleReject) && UITrait.inst.brush3d) path.bindTarget("gbuffer0", "gbuffer0"); - var mo:iron.object.MeshObject = cast iron.Scene.active.getChild(".ParticleEmitter"); + var mo:MeshObject = cast Scene.active.getChild(".ParticleEmitter"); mo.visible = true; mo.render(path.currentG, "mesh", @:privateAccess path.bindParams); mo.visible = false; - mo = cast iron.Scene.active.getChild(".Particle"); + mo = cast Scene.active.getChild(".Particle"); mo.visible = true; mo.render(path.currentG, "mesh", @:privateAccess path.bindParams); mo.visible = false; @@ -151,7 +153,7 @@ class RenderPathPaint { var path = RenderPathDeferred.path; - var plane = cast(iron.Scene.active.getChild(".Plane"), iron.object.MeshObject); + var plane = cast(Scene.active.getChild(".Plane"), MeshObject); var geom = plane.data.geom; var g = path.frameG; @@ -174,9 +176,9 @@ class RenderPathPaint { g.setFloat2(Layers.cursorMouse, mx, my); g.setFloat2(Layers.cursorStep, 2 / gbuffer0.width, 2 / gbuffer0.height); g.setFloat(Layers.cursorRadius, UITrait.inst.brushRadius / 3.4); - g.setMatrix(Layers.cursorVP, iron.Scene.active.camera.VP.self); + g.setMatrix(Layers.cursorVP, Scene.active.camera.VP.self); var helpMat = iron.math.Mat4.identity(); - helpMat.getInverse(iron.Scene.active.camera.VP); + helpMat.getInverse(Scene.active.camera.VP); g.setMatrix(Layers.cursorInvVP, helpMat.self); g.setVertexBuffer(geom.vertexBuffer); g.setIndexBuffer(geom.indexBuffers[0]); diff --git a/Sources/arm/render/RenderPathPreview.hx b/Sources/arm/render/RenderPathPreview.hx index a09e0852..e022f3f1 100644 --- a/Sources/arm/render/RenderPathPreview.hx +++ b/Sources/arm/render/RenderPathPreview.hx @@ -1,11 +1,12 @@ package arm.render; +import iron.RenderPath; import arm.ui.UITrait; import arm.Tool; +@:access(iron.RenderPath) class RenderPathPreview { - @:access(iron.RenderPath) public static function commandsPreview() { var path = RenderPathDeferred.path; @@ -52,11 +53,10 @@ class RenderPathPreview { var framebuffer = "texpreview"; var selectedMat = UITrait.inst.worktab.position == SpaceScene ? UITrait.inst.selectedMaterialScene : UITrait.inst.selectedMaterial; - iron.RenderPath.active.renderTargets.get("texpreview").image = selectedMat.image; - iron.RenderPath.active.renderTargets.get("texpreview_icon").image = selectedMat.imageIcon; + RenderPath.active.renderTargets.get("texpreview").image = selectedMat.image; + RenderPath.active.renderTargets.get("texpreview_icon").image = selectedMat.imageIcon; - // path.setTarget("mbuf"); - path.setTarget(framebuffer); // + path.setTarget(framebuffer); path.bindTarget("mtex", "tex"); #if rp_compositordepth @@ -71,7 +71,6 @@ class RenderPathPreview { path.drawShader("shader_datas/supersample_resolve/supersample_resolve"); } - @:access(iron.RenderPath) public static function commandsDecal() { var path = RenderPathDeferred.path; @@ -117,10 +116,9 @@ class RenderPathPreview { path.drawSkydome("shader_datas/world_pass/world_pass"); var framebuffer = "texpreview"; - iron.RenderPath.active.renderTargets.get("texpreview").image = UITrait.inst.decalImage; + RenderPath.active.renderTargets.get("texpreview").image = UITrait.inst.decalImage; - // path.setTarget("buf"); - path.setTarget(framebuffer); // + path.setTarget(framebuffer); path.bindTarget("tex", "tex"); #if rp_compositordepth diff --git a/Sources/arm/render/Uniforms.hx b/Sources/arm/render/Uniforms.hx index c594e19a..15e2fa4c 100644 --- a/Sources/arm/render/Uniforms.hx +++ b/Sources/arm/render/Uniforms.hx @@ -2,6 +2,7 @@ package arm.render; import iron.data.MaterialData; import iron.object.Object; +import iron.system.Input; import iron.RenderPath; import arm.ui.UITrait; import arm.util.UVUtil; @@ -18,7 +19,7 @@ class Uniforms { public static function linkFloat(object:Object, mat:MaterialData, link:String):Null { if (link == '_brushRadius') { var val = (UITrait.inst.brushRadius * UITrait.inst.brushNodesRadius) / 15.0; - var pen = iron.system.Input.getPen(); + var pen = Input.getPen(); if (UITrait.penPressureRadius && pen.down()) val *= pen.pressure; var decal = UITrait.inst.selectedTool == ToolDecal || UITrait.inst.selectedTool == ToolText; if (UITrait.inst.brush3d && !decal) { @@ -29,13 +30,13 @@ class Uniforms { } else if (link == '_brushOpacity') { var val = UITrait.inst.brushOpacity * UITrait.inst.brushNodesOpacity; - var pen = iron.system.Input.getPen(); + var pen = Input.getPen(); if (UITrait.penPressureOpacity && pen.down()) val *= pen.pressure; return val; } else if (link == '_brushHardness') { var val = UITrait.inst.brushHardness * UITrait.inst.brushNodesHardness; - var pen = iron.system.Input.getPen(); + var pen = Input.getPen(); if (UITrait.penPressureHardness && pen.down()) val *= pen.pressure; if (UITrait.inst.brush3d && !UITrait.inst.paint2d) val *= val; return val; @@ -83,13 +84,13 @@ class Uniforms { public static function linkVec4(object:Object, mat:MaterialData, link:String):iron.math.Vec4 { var vec2 = UITrait.inst.vec2; if (link == '_inputBrush') { - var down = iron.system.Input.getMouse().down() || iron.system.Input.getPen().down(); + var down = Input.getMouse().down() || Input.getPen().down(); vec2.set(UITrait.inst.paintVec.x, UITrait.inst.paintVec.y, down ? 1.0 : 0.0, 0.0); if (UITrait.inst.paint2d) vec2.x -= 1.0; return vec2; } else if (link == '_inputBrushLast') { - var down = iron.system.Input.getMouse().down() || iron.system.Input.getPen().down(); + var down = Input.getMouse().down() || Input.getPen().down(); vec2.set(UITrait.inst.lastPaintVecX, UITrait.inst.lastPaintVecY, down ? 1.0 : 0.0, 0.0); if (UITrait.inst.paint2d) vec2.x -= 1.0; return vec2; diff --git a/Sources/arm/ui/UIBox.hx b/Sources/arm/ui/UIBox.hx index ff6315b7..7620c2d6 100644 --- a/Sources/arm/ui/UIBox.hx +++ b/Sources/arm/ui/UIBox.hx @@ -1,7 +1,9 @@ package arm.ui; +import kha.System; import zui.Zui; import zui.Id; +import iron.system.Input; import arm.App; import arm.util.ViewportUtil; @@ -16,8 +18,8 @@ class UIBox { public static function render(g:kha.graphics2.Graphics) { var uibox = App.uibox; - var appw = kha.System.windowWidth(); - var apph = kha.System.windowHeight(); + var appw = System.windowWidth(); + var apph = System.windowHeight(); var modalW = Std.int(300 * uibox.SCALE); var modalH = Std.int(115 * uibox.SCALE); var left = Std.int(appw / 2 - modalW / 2); @@ -58,10 +60,10 @@ class UIBox { } public static function update() { - var mouse = iron.system.Input.getMouse(); + var mouse = Input.getMouse(); if (mouse.released()) { - var appw = kha.System.windowWidth(); - var apph = kha.System.windowHeight(); + var appw = System.windowWidth(); + var apph = System.windowHeight(); var left = appw / 2 - modalW / 2; var right = appw / 2 + modalW / 2; var top = apph / 2 - modalH / 2; diff --git a/Sources/arm/ui/UIFiles.hx b/Sources/arm/ui/UIFiles.hx index 0a4cc22e..18f9025c 100644 --- a/Sources/arm/ui/UIFiles.hx +++ b/Sources/arm/ui/UIFiles.hx @@ -1,6 +1,7 @@ package arm.ui; import zui.Id; +import iron.system.Input; import arm.App; class UIFiles { @@ -35,7 +36,7 @@ class UIFiles { static function releaseKeys() { // File dialog may prevent firing key up events - var kb = iron.system.Input.getKeyboard(); + var kb = Input.getKeyboard(); @:privateAccess kb.upListener(kha.input.KeyCode.Shift); @:privateAccess kb.upListener(kha.input.KeyCode.Control); } diff --git a/Sources/arm/ui/UIMenu.hx b/Sources/arm/ui/UIMenu.hx index e5a83007..a8d6ebea 100644 --- a/Sources/arm/ui/UIMenu.hx +++ b/Sources/arm/ui/UIMenu.hx @@ -1,6 +1,11 @@ package arm.ui; +import haxe.Json; +import kha.System; +import kha.Blob; import zui.Zui; +import iron.system.Input; +import iron.data.Data; import arm.App; import arm.util.ViewportUtil; @@ -65,7 +70,7 @@ class UIMenu { // ui.button("Export Textures...", Left); // ui.button("Export Mesh...", Left); ui.fill(0, 0, sepw, 1, ui.t.ACCENT_SELECT_COL); - if (ui.button("Exit", Left)) { kha.System.stop(); } + if (ui.button("Exit", Left)) { System.stop(); } } else if (menuCategory == 1) { if (ui.button("Undo", Left, "Ctrl+Z")) History.doUndo(); @@ -120,7 +125,7 @@ class UIMenu { if (ui.button("Check for Updates...", Left)) { // Retrieve latest version number #if kha_krom - var outFile = Krom.getFilesLocation() + '/' + iron.data.Data.dataPath + "update.txt"; + var outFile = Krom.getFilesLocation() + '/' + Data.dataPath + "update.txt"; var uri = "'https://luboslenco.gitlab.io/armorpaint/index.html'"; #if krom_windows Krom.sysCommand('powershell -c "Invoke-WebRequest -Uri ' + uri + " -OutFile '" + outFile + "'"); @@ -128,8 +133,8 @@ class UIMenu { Krom.sysCommand('curl ' + uri + ' -o ' + outFile); #end // Compare versions - iron.data.Data.getBlob(outFile, function(blob:kha.Blob) { - var update = haxe.Json.parse(blob.toString()); + Data.getBlob(outFile, function(blob:Blob) { + var update = Json.parse(blob.toString()); var updateVersion = Std.int(update.version); if (updateVersion > 0) { var date = Macro.buildDate().split(" ")[0].substr(2); // 2019 -> 19 @@ -141,7 +146,7 @@ class UIMenu { UIBox.showMessage("You are up to date!"); } } - iron.data.Data.deleteBlob(outFile); + Data.deleteBlob(outFile); }); #end } @@ -151,10 +156,10 @@ class UIMenu { var date = Macro.buildDate().split(" ")[0]; var gapi = #if (kha_direct3d11) "Direct3D11" #else "OpenGL" #end; var msg = "ArmorPaint.org - v" + App.version + " (" + date + ") - " + sha + "\n"; - msg += kha.System.systemId + " - " + gapi; + msg += System.systemId + " - " + gapi; #if krom_windows - var save = Krom.getFilesLocation() + "\\" + iron.data.Data.dataPath + "gpu.txt"; + var save = Krom.getFilesLocation() + "\\" + Data.dataPath + "gpu.txt"; Krom.sysCommand('wmic path win32_VideoController get name' + ' > "' + save + '"'); var bytes = haxe.io.Bytes.ofData(Krom.loadBlob(save)); var gpu = ""; @@ -206,11 +211,11 @@ class UIMenu { var uibox = App.uibox; App.showMenu = true; menuCommands = commands; - menuX = x > -1 ? x : Std.int(iron.App.x() + iron.system.Input.getMouse().x); - menuY = y > -1 ? y : Std.int(iron.App.y() + iron.system.Input.getMouse().y); + menuX = x > -1 ? x : Std.int(iron.App.x() + Input.getMouse().x); + menuY = y > -1 ? y : Std.int(iron.App.y() + Input.getMouse().y); var menuw = uibox.ELEMENT_W() * 1.5; - if (menuX + menuw > kha.System.windowWidth()) { - menuX = Std.int(kha.System.windowWidth() - menuw); + if (menuX + menuw > System.windowWidth()) { + menuX = Std.int(System.windowWidth() - menuw); } } } diff --git a/Sources/arm/ui/UINodes.hx b/Sources/arm/ui/UINodes.hx index afef1c42..93c00179 100644 --- a/Sources/arm/ui/UINodes.hx +++ b/Sources/arm/ui/UINodes.hx @@ -1,18 +1,26 @@ package arm.ui; +import haxe.Json; +import kha.Blob; +import kha.Image; +import kha.System; import zui.Zui; import zui.Id; import zui.Nodes; +import iron.data.Data; +import iron.system.Input; import arm.nodes.NodesMaterial; import arm.nodes.NodesBrush; +import arm.nodes.MaterialParser; import arm.util.RenderUtil; import arm.ui.UITrait; -import arm.Tool; import arm.data.BrushSlot; import arm.data.MaterialSlot; +import arm.Tool; +import arm.App; @:access(zui.Zui) -class UINodes extends iron.Trait { +class UINodes { public static var inst:UINodes; static var materialCounter = 0; @@ -54,29 +62,28 @@ class UINodes extends iron.Trait { var nodeSearchOffset = 0; var nodeSearchLast = ""; - public var grid:kha.Image = null; + public var grid:Image = null; public var hwnd = Id.handle(); public function new() { - super(); inst = this; Nodes.excludeRemove.push("OUTPUT_MATERIAL_PBR"); // Cycles.arm_export_tangents = false; - iron.data.Data.getBlob('defaults/default_material.json', function(b1:kha.Blob) { - iron.data.Data.getBlob('defaults/default_brush.json', function(b2:kha.Blob) { + Data.getBlob('defaults/default_material.json', function(b1:Blob) { + Data.getBlob('defaults/default_brush.json', function(b2:Blob) { canvasBlob = b1.toString(); canvasBrushBlob = b2.toString(); - canvas = haxe.Json.parse(canvasBlob); - canvasBrush = haxe.Json.parse(canvasBrushBlob); - arm.nodes.MaterialParser.parseBrush(); + canvas = Json.parse(canvasBlob); + canvasBrush = Json.parse(canvasBrushBlob); + MaterialParser.parseBrush(); - var t = Reflect.copy(arm.App.theme); + var t = Reflect.copy(App.theme); t.ELEMENT_H = 18; t.BUTTON_H = 16; var scale = armory.data.Config.raw.window_scale; - ui = new Zui({font: arm.App.font, theme: t, color_wheel: arm.App.color_wheel, scaleFactor: scale}); + ui = new Zui({font: App.font, theme: t, color_wheel: App.color_wheel, scaleFactor: scale}); ui.scrollEnabled = false; }); }); @@ -87,7 +94,7 @@ class UINodes extends iron.Trait { if (canvasMap2 == null) canvasMap2 = new Map(); var c = canvasMap2.get(UITrait.inst.selectedMaterialScene); if (c == null) { - c = haxe.Json.parse(canvasBlob); + c = Json.parse(canvasBlob); canvasMap2.set(UITrait.inst.selectedMaterialScene, c); canvas = c; } @@ -100,7 +107,7 @@ class UINodes extends iron.Trait { if (canvasMap == null) canvasMap = new Map(); var c = canvasMap.get(UITrait.inst.selectedMaterial); if (c == null) { - c = haxe.Json.parse(canvasBlob); + c = Json.parse(canvasBlob); canvasMap.set(UITrait.inst.selectedMaterial, c); canvas = c; c.name = "Material " + (++materialCounter); @@ -116,7 +123,7 @@ class UINodes extends iron.Trait { if (canvasBrushMap == null) canvasBrushMap = new Map(); var c = canvasBrushMap.get(UITrait.inst.selectedBrush); if (c == null) { - c = haxe.Json.parse(canvasBrushBlob); + c = Json.parse(canvasBrushBlob); canvasBrushMap.set(UITrait.inst.selectedBrush, c); canvasBrush = c; } @@ -135,7 +142,7 @@ class UINodes extends iron.Trait { updateCanvasMap(); updateCanvasBrushMap(); - var mouse = iron.system.Input.getMouse(); + var mouse = Input.getMouse(); mreleased = mouse.released(); mdown = mouse.down(); @@ -143,7 +150,7 @@ class UINodes extends iron.Trait { if (ui.changed) { mchanged = true; if (!mdown) changed = true; - if (canvasType == 1) arm.nodes.MaterialParser.parseBrush(); + if (canvasType == 1) MaterialParser.parseBrush(); } if ((mreleased && mchanged) || changed) { mchanged = changed = false; @@ -152,7 +159,7 @@ class UINodes extends iron.Trait { Layers.updateFillLayers(); // TODO: jitter UITrait.inst.hwnd.redraws = 2; } - arm.nodes.MaterialParser.parsePaintMaterial(); + MaterialParser.parsePaintMaterial(); RenderUtil.makeMaterialPreview(); UITrait.inst.hwnd1.redraws = 2; var decal = UITrait.inst.selectedTool == ToolDecal || UITrait.inst.selectedTool == ToolText; @@ -165,8 +172,8 @@ class UINodes extends iron.Trait { mstartedlast = mouse.started(); if (!show) return; - if (!arm.App.uienabled) return; - var keyboard = iron.system.Input.getKeyboard(); + if (!App.uienabled) return; + var keyboard = Input.getKeyboard(); var lay = App.C.ui_layout; wx = lay == 0 ? Std.int(iron.App.w()) : UITrait.inst.windowW; @@ -206,7 +213,7 @@ class UINodes extends iron.Trait { } function nodeSearch(x = -1, y = -1) { - var keyboard = iron.system.Input.getKeyboard(); + var keyboard = Input.getKeyboard(); var searchHandle = Id.handle(); var first = true; UIMenu.show(function(ui:Zui) { @@ -264,12 +271,12 @@ class UINodes extends iron.Trait { } public function getNodeX():Int { - var mouse = iron.system.Input.getMouse(); + var mouse = Input.getMouse(); return Std.int((mouse.x + App.x() - wx - nodes.PAN_X()) / nodes.SCALE); } public function getNodeY():Int { - var mouse = iron.system.Input.getMouse(); + var mouse = Input.getMouse(); return Std.int((mouse.y + App.y() - wy - nodes.PAN_Y()) / nodes.SCALE); } @@ -280,7 +287,7 @@ class UINodes extends iron.Trait { var h = wh + 40 * 2; if (w < 1) w = 1; if (h < 1) h = 1; - grid = kha.Image.createRenderTarget(w, h); + grid = Image.createRenderTarget(w, h); grid.g2.begin(true, ui.t.SEPARATOR_COL); for (i in 0...Std.int(h / 40) + 1) { grid.g2.color = ui.t.WINDOW_BG_COL; @@ -306,10 +313,10 @@ class UINodes extends iron.Trait { } if (!show) return; - if (kha.System.windowWidth() == 0 || kha.System.windowHeight() == 0) return; + if (System.windowWidth() == 0 || System.windowHeight() == 0) return; - if (!arm.App.uienabled && ui.inputRegistered) ui.unregisterInput(); - if (arm.App.uienabled && !ui.inputRegistered) ui.registerInput(); + if (!App.uienabled && ui.inputRegistered) ui.unregisterInput(); + if (App.uienabled && !ui.inputRegistered) ui.registerInput(); g.end(); @@ -463,7 +470,7 @@ class UINodes extends iron.Trait { } public static function makeNode(n:TNode, nodes:Nodes, canvas:TNodeCanvas):TNode { - var node:TNode = haxe.Json.parse(haxe.Json.stringify(n)); + var node:TNode = Json.parse(Json.stringify(n)); node.id = nodes.getNodeId(canvas.nodes); node.x = UINodes.inst.getNodeX(); node.y = UINodes.inst.getNodeY(); diff --git a/Sources/arm/ui/UITrait.hx b/Sources/arm/ui/UITrait.hx index b04497c8..55cba68c 100644 --- a/Sources/arm/ui/UITrait.hx +++ b/Sources/arm/ui/UITrait.hx @@ -1,17 +1,22 @@ package arm.ui; +import haxe.io.Bytes; +import kha.Image; +import kha.System; import zui.Zui; import zui.Id; import zui.Ext; -import zui.Canvas; +import iron.data.Data; import iron.data.MaterialData; import iron.object.Object; import iron.object.MeshObject; import iron.math.Mat4; -import iron.math.Math; +import iron.math.Vec4; +import iron.system.Input; +import iron.system.Time; import iron.RenderPath; +import iron.Scene; import arm.nodes.MaterialParser; -import arm.Project; import arm.util.MeshUtil; import arm.util.RenderUtil; import arm.util.ViewportUtil; @@ -19,15 +24,22 @@ import arm.util.UVUtil; import arm.data.LayerSlot; import arm.data.BrushSlot; import arm.data.MaterialSlot; +import arm.io.Importer; +import arm.io.ImportArm; +import arm.io.ImportBlend; +import arm.io.Exporter; +import arm.io.ExportArm; +import arm.Project; import arm.Tool; +import arm.App; @:access(zui.Zui) -class UITrait extends iron.Trait { +class UITrait { public var project:TProjectFormat; public var projectPath = ""; - public var assets:Array = []; + public var assets:Array = []; public var assetNames:Array = []; public var assetId = 0; @@ -65,9 +77,9 @@ class UITrait extends iron.Trait { var messageTimer = 0.0; var messageColor = 0x00000000; - public var savedEnvmap:kha.Image = null; - public var emptyEnvmap:kha.Image = null; - public var previewEnvmap:kha.Image = null; + public var savedEnvmap:Image = null; + public var emptyEnvmap:Image = null; + public var previewEnvmap:Image = null; public var showEnvmap = false; public var showEnvmapHandle = new Handle({selected: false}); public var showEnvmapBlur = false; @@ -124,7 +136,7 @@ class UITrait extends iron.Trait { public var selectedMaterial:MaterialSlot; public var materialsScene:Array = null; public var selectedMaterialScene:MaterialSlot; - public var selectedTexture:TAsset = null; + public var selectedTexture:zui.Canvas.TAsset = null; public var brushes:Array = null; public var selectedBrush:BrushSlot; public var layers:Array = null; @@ -133,16 +145,16 @@ class UITrait extends iron.Trait { public var selectedLayerIsMask = false; // Mask selected for active layer var selectTime = 0.0; public var displaceStrength = 1.0; - public var decalImage:kha.Image = null; + public var decalImage:Image = null; public var decalPreview = false; public var viewportMode = 0; var hscaleWasChanged = false; public var exportMeshFormat = 0; - public var textToolImage:kha.Image = null; + public var textToolImage:Image = null; public var textToolText = "Text"; public var textToolHandle = new Handle({position: 0}); - public var decalMaskImage:kha.Image = null; + public var decalMaskImage:Image = null; public var decalMaskHandle = new Handle({position: 0}); public var particleMaterial:MaterialData = null; @@ -150,7 +162,7 @@ class UITrait extends iron.Trait { var _onBrush:ArrayVoid> = []; - public var paintVec = new iron.math.Vec4(); + public var paintVec = new Vec4(); public var lastPaintX = -1.0; public var lastPaintY = -1.0; public var painted = 0; @@ -210,7 +222,7 @@ class UITrait extends iron.Trait { public var projectObjects:Array; public var sub = 0; - public var vec2 = new iron.math.Vec4(); + public var vec2 = new Vec4(); public var lastPaintVecX = -1.0; public var lastPaintVecY = -1.0; @@ -242,7 +254,7 @@ class UITrait extends iron.Trait { public var menuHandle = new Handle({layout:Horizontal}); public var workspaceHandle = new Handle({layout:Horizontal}); var lastCombo:Handle = null; - var lastTooltip:kha.Image = null; + var lastTooltip:Image = null; public var cameraControls = 1; public var htab = Id.handle({position: 0}); @@ -269,8 +281,6 @@ class UITrait extends iron.Trait { } public function new() { - super(); - inst = this; windowW = Std.int(defaultWindowW * App.C.window_scale); @@ -283,7 +293,7 @@ class UITrait extends iron.Trait { if (materials == null) { materials = []; // - iron.data.Data.getMaterial("Scene", "Material", function(m:iron.data.MaterialData) { + Data.getMaterial("Scene", "Material", function(m:MaterialData) { materials.push(new MaterialSlot(m)); selectedMaterial = materials[0]; }); @@ -293,7 +303,7 @@ class UITrait extends iron.Trait { } if (materialsScene == null) { materialsScene = []; - iron.data.Data.getMaterial("Scene", "Material2", function(m:iron.data.MaterialData) { + Data.getMaterial("Scene", "Material2", function(m:MaterialData) { materialsScene.push(new MaterialSlot(m)); selectedMaterialScene = materialsScene[0]; }); @@ -312,23 +322,23 @@ class UITrait extends iron.Trait { } if (emptyEnvmap == null) { - var b = haxe.io.Bytes.alloc(4); + var b = Bytes.alloc(4); b.set(0, 3); b.set(1, 3); b.set(2, 3); b.set(3, 255); - emptyEnvmap = kha.Image.fromBytes(b, 1, 1); + emptyEnvmap = Image.fromBytes(b, 1, 1); } if (previewEnvmap == null) { - var b = haxe.io.Bytes.alloc(4); + var b = Bytes.alloc(4); b.set(0, 0); b.set(1, 0); b.set(2, 0); b.set(3, 255); - previewEnvmap = kha.Image.fromBytes(b, 1, 1); + previewEnvmap = Image.fromBytes(b, 1, 1); } - var world = iron.Scene.active.world; + var world = Scene.active.world; if (savedEnvmap == null) { savedEnvmap = world.envmap; } @@ -357,7 +367,7 @@ class UITrait extends iron.Trait { } frame++; - var m = iron.system.Input.getMouse(); + var m = Input.getMouse(); if (m.down()) { // UITrait.inst.lastPaintVecX = UITrait.inst.paintVec.x; // UITrait.inst.lastPaintVecY = UITrait.inst.paintVec.y; // @@ -369,13 +379,13 @@ class UITrait extends iron.Trait { });// var scale = App.C.window_scale; - ui = new Zui( { theme: arm.App.theme, font: arm.App.font, scaleFactor: scale, color_wheel: arm.App.color_wheel } ); + ui = new Zui( { theme: App.theme, font: App.font, scaleFactor: scale, color_wheel: App.color_wheel } ); var resources = ['cursor.png', 'icons.png']; Res.load(resources, done); projectObjects = []; - for (m in iron.Scene.active.meshes) projectObjects.push(m); + for (m in Scene.active.meshes) projectObjects.push(m); } public function showMessage(s:String) { @@ -395,15 +405,15 @@ class UITrait extends iron.Trait { function done() { if (ui.SCALE > 1) setIconScale(); // - gizmo = iron.Scene.active.getChild(".GizmoTranslate"); + gizmo = Scene.active.getChild(".GizmoTranslate"); gizmo.transform.scale.set(0.5, 0.5, 0.5); gizmo.transform.buildMatrix(); - gizmoX = iron.Scene.active.getChild("GizmoX"); - gizmoY = iron.Scene.active.getChild("GizmoY"); - gizmoZ = iron.Scene.active.getChild("GizmoZ"); + gizmoX = Scene.active.getChild("GizmoX"); + gizmoY = Scene.active.getChild("GizmoY"); + gizmoZ = Scene.active.getChild("GizmoZ"); // - selectedObject = iron.Scene.active.getChild("Cube"); + selectedObject = Scene.active.getChild("Cube"); paintObject = cast(selectedObject, MeshObject); paintObjects = [paintObject]; @@ -415,7 +425,7 @@ class UITrait extends iron.Trait { Plugin.keep(); if (App.C.plugins != null) { for (plugin in App.C.plugins) { - iron.data.Data.getBlob("plugins/" + plugin, function(blob:kha.Blob) { + Data.getBlob("plugins/" + plugin, function(blob:kha.Blob) { #if js untyped __js__("(1, eval)({0})", blob.toString()); #end @@ -429,12 +439,12 @@ class UITrait extends iron.Trait { function update() { if (textureExport) { textureExport = false; - arm.io.Exporter.exportTextures(textureExportPath); + Exporter.exportTextures(textureExportPath); } if (projectExport) { projectExport = false; - arm.io.ExportArm.runProject(); - if (App.saveAndQuit) kha.System.stop(); + ExportArm.runProject(); + if (App.saveAndQuit) System.stop(); } isScrolling = ui.isScrolling; @@ -442,27 +452,27 @@ class UITrait extends iron.Trait { for (p in Plugin.plugins) if (p.update != null) p.update(); - var kb = iron.system.Input.getKeyboard(); + var kb = Input.getKeyboard(); var shift = kb.down("shift"); var ctrl = kb.down("control"); var alt = kb.down("alt"); alt = false; // TODO: gets stuck after alt+tab - if (!arm.App.uibox.isTyping) { + if (!App.uibox.isTyping) { if (kb.started("escape")) { - arm.App.showFiles = false; - arm.App.showBox = false; + App.showFiles = false; + App.showBox = false; } - if (arm.App.showFiles) { + if (App.showFiles) { if (kb.started("enter")) { - arm.App.showFiles = false; - arm.App.filesDone(arm.App.path); + App.showFiles = false; + App.filesDone(App.path); UITrait.inst.ddirty = 2; } } } - if (!arm.App.uienabled) return; + if (!App.uienabled) return; if (!UINodes.inst.ui.isTyping && !UITrait.inst.ui.isTyping) { if (shortcut(App.K.cycle_layers)) { @@ -483,13 +493,12 @@ class UITrait extends iron.Trait { else if (shortcut(App.K.file_new)) UIBox.newProject(); else if (shortcut(App.K.export_textures)) { if (textureExportPath == "") { // First export, ask for path - arm.App.showFiles = true; - @:privateAccess Ext.lastPath = ""; - arm.App.whandle.redraws = 2; - arm.App.foldersOnly = true; - arm.App.showFilename = true; + App.showFiles = true; + App.whandle.redraws = 2; + App.foldersOnly = true; + App.showFilename = true; UIFiles.filters = bitsHandle.position > 0 ? "exr" : formatType == 0 ? "png" : "jpg"; - arm.App.filesDone = function(path:String) { + App.filesDone = function(path:String) { textureExport = true; textureExportPath = path; } @@ -497,23 +506,22 @@ class UITrait extends iron.Trait { else textureExport = true; } else if (shortcut(App.K.import_assets)) { - arm.App.showFiles = true; - @:privateAccess Ext.lastPath = ""; // Refresh - arm.App.whandle.redraws = 2; - arm.App.foldersOnly = false; - arm.App.showFilename = false; + App.showFiles = true; + App.whandle.redraws = 2; + App.foldersOnly = false; + App.showFilename = false; UIFiles.filters = "jpg,png,tga,hdr,obj,fbx,blend,gltf,arm"; - arm.App.filesDone = function(path:String) { - arm.io.Importer.importFile(path); + App.filesDone = function(path:String) { + Importer.importFile(path); } } if (kb.started(App.K.view_distract_free) || - (kb.started("escape") && !show && !arm.App.showFiles && !arm.App.showBox)) { + (kb.started("escape") && !show && !App.showFiles && !App.showBox)) { toggleDistractFree(); } - var mouse = iron.system.Input.getMouse(); + var mouse = Input.getMouse(); if (brushCanLock || brushLocked) { if (kb.down(App.K.brush_radius) && mouse.moved) { @@ -624,7 +632,7 @@ class UITrait extends iron.Trait { public function toggleDistractFree() { show = !show; - arm.App.resize(); + App.resize(); } function selectMaterialScene(i:Int) { @@ -685,16 +693,16 @@ class UITrait extends iron.Trait { function updateUI() { if (messageTimer > 0) { - messageTimer -= iron.system.Time.delta; + messageTimer -= Time.delta; if (messageTimer <= 0) statusHandle.redraws = 2; } - var mouse = iron.system.Input.getMouse(); - var kb = iron.system.Input.getKeyboard(); + var mouse = Input.getMouse(); + var kb = Input.getKeyboard(); - if (!arm.App.uienabled) return; + if (!App.uienabled) return; - var down = iron.system.Input.getMouse().down() || iron.system.Input.getPen().down(); + var down = Input.getMouse().down() || Input.getPen().down(); if (down && !kb.down("control")) { var mx = mouse.x; var my = mouse.y; @@ -710,7 +718,7 @@ class UITrait extends iron.Trait { else { if (brushTime == 0) { // Paint started pushUndo = true; - kha.Window.get(0).title = arm.App.filenameHandle.text + "* - ArmorPaint"; + kha.Window.get(0).title = App.filenameHandle.text + "* - ArmorPaint"; if (selectedTool == ToolClone && cloneStartX >= 0.0) { // Clone delta cloneDeltaX = (cloneStartX - mx) / iron.App.w(); cloneDeltaY = (cloneStartY - my) / iron.App.h(); @@ -718,14 +726,14 @@ class UITrait extends iron.Trait { } else if (selectedTool == ToolParticle) { // Reset particles - var emitter:MeshObject = cast iron.Scene.active.getChild(".ParticleEmitter"); + var emitter:MeshObject = cast Scene.active.getChild(".ParticleEmitter"); var psys = emitter.particleSystems[0]; @:privateAccess psys.time = 0; // @:privateAccess psys.time = @:privateAccess psys.seed * @:privateAccess psys.animtime; // @:privateAccess psys.seed++; } } - brushTime += iron.system.Time.delta; + brushTime += Time.delta; for (f in _onBrush) f(0); } } @@ -795,7 +803,7 @@ class UITrait extends iron.Trait { } function render(g:kha.graphics2.Graphics) { - if (kha.System.windowWidth() == 0 || kha.System.windowHeight() == 0) return; + if (System.windowWidth() == 0 || System.windowHeight() == 0) return; renderUI(g); } @@ -803,7 +811,7 @@ class UITrait extends iron.Trait { function renderCursor(g:kha.graphics2.Graphics) { // if (cursorImg == null) { // g.end(); - // cursorImg = kha.Image.createRenderTarget(256, 256); + // cursorImg = Image.createRenderTarget(256, 256); // cursorImg.g2.begin(true, 0x00000000); // cursorImg.g2.color = 0xffcccccc; // kha.graphics2.GraphicsExtension.drawCircle(cursorImg.g2, 128, 128, 124, 8); @@ -814,11 +822,11 @@ class UITrait extends iron.Trait { g.color = 0xffffffff; // Brush - if (arm.App.uienabled && worktab.position == SpacePaint) { - var mouse = iron.system.Input.getMouse(); + if (App.uienabled && worktab.position == SpacePaint) { + var mouse = Input.getMouse(); var mx = mouse.x + iron.App.x(); var my = mouse.y + iron.App.y(); - var pen = iron.system.Input.getPen(); + var pen = Input.getPen(); if (pen.down()) { mx = pen.x + iron.App.x(); my = pen.y + iron.App.y(); @@ -826,8 +834,8 @@ class UITrait extends iron.Trait { // Radius being scaled if (brushLocked) { - mx += lockStartedX - kha.System.windowWidth() / 2; - my += lockStartedY - kha.System.windowHeight() / 2; + mx += lockStartedX - System.windowWidth() / 2; + my += lockStartedY - System.windowHeight() / 2; } // Show picked material next to cursor @@ -840,7 +848,7 @@ class UITrait extends iron.Trait { var psize = Std.int(cursorImg.width * (brushRadius * brushNodesRadius)); // Clone source cursor - var kb = iron.system.Input.getKeyboard(); + var kb = Input.getKeyboard(); if (selectedTool == ToolClone && !kb.down("alt") && (mouse.down() || pen.down())) { g.color = 0x66ffffff; g.drawScaledImage(cursorImg, mx + cloneDeltaX * iron.App.w() - psize / 2, my + cloneDeltaY * iron.App.h() - psize / 2, psize, psize); @@ -878,7 +886,7 @@ class UITrait extends iron.Trait { if (UINodes.inst.show && UINodes.inst.canvasType == 0) UINodes.inst.show = false; else { UINodes.inst.show = true; UINodes.inst.canvasType = 0; } - arm.App.resize(); + App.resize(); } function showBrushNodes() { @@ -887,7 +895,7 @@ class UITrait extends iron.Trait { if (UINodes.inst.show && UINodes.inst.canvasType == 1) UINodes.inst.show = false; else { UINodes.inst.show = true; UINodes.inst.canvasType = 1; } - arm.App.resize(); + App.resize(); } // function showParticleNodes() {} @@ -898,7 +906,7 @@ class UITrait extends iron.Trait { if (UIView2D.inst.type != type) UIView2D.inst.show = true; else UIView2D.inst.show = !UIView2D.inst.show; UIView2D.inst.type = type; - arm.App.resize(); + App.resize(); } function selectTool(i:Int) { @@ -964,8 +972,8 @@ class UITrait extends iron.Trait { UVUtil.trianglemapCached = false; } - public function getImage(asset:TAsset):kha.Image { - return asset != null ? Canvas.assetMap.get(asset.id) : null; + public function getImage(asset:zui.Canvas.TAsset):Image { + return asset != null ? zui.Canvas.assetMap.get(asset.id) : null; } public function mainObject():MeshObject { @@ -975,8 +983,8 @@ class UITrait extends iron.Trait { function renderUI(g:kha.graphics2.Graphics) { - if (!arm.App.uienabled && ui.inputRegistered) ui.unregisterInput(); - if (arm.App.uienabled && !ui.inputRegistered) ui.registerInput(); + if (!App.uienabled && ui.inputRegistered) ui.unregisterInput(); + if (App.uienabled && !ui.inputRegistered) ui.registerInput(); if (!show) return; @@ -985,7 +993,7 @@ class UITrait extends iron.Trait { var panelx = (iron.App.x() - toolbarw); if (App.C.ui_layout == 1 && (UINodes.inst.show || UIView2D.inst.show)) panelx = panelx - App.w() - toolbarw; - if (ui.window(toolbarHandle, panelx, headerh, toolbarw, kha.System.windowHeight())) { + if (ui.window(toolbarHandle, panelx, headerh, toolbarw, System.windowHeight())) { ui._y += 2; ui.imageScrollAlign = false; @@ -1032,10 +1040,10 @@ class UITrait extends iron.Trait { var BUTTON_COL = ui.t.BUTTON_COL; ui.t.BUTTON_COL = ui.t.SEPARATOR_COL; - if (ui.button("File", Left) || (arm.App.showMenu && ui.isHovered)) { arm.App.showMenu = true; UIMenu.menuCategory = 0; }; - if (ui.button("Edit", Left) || (arm.App.showMenu && ui.isHovered)) { arm.App.showMenu = true; UIMenu.menuCategory = 1; }; - if (ui.button("View", Left) || (arm.App.showMenu && ui.isHovered)) { arm.App.showMenu = true; UIMenu.menuCategory = 2; }; - if (ui.button("Help", Left) || (arm.App.showMenu && ui.isHovered)) { arm.App.showMenu = true; UIMenu.menuCategory = 3; }; + if (ui.button("File", Left) || (App.showMenu && ui.isHovered)) { App.showMenu = true; UIMenu.menuCategory = 0; }; + if (ui.button("Edit", Left) || (App.showMenu && ui.isHovered)) { App.showMenu = true; UIMenu.menuCategory = 1; }; + if (ui.button("View", Left) || (App.showMenu && ui.isHovered)) { App.showMenu = true; UIMenu.menuCategory = 2; }; + if (ui.button("Help", Left) || (App.showMenu && ui.isHovered)) { App.showMenu = true; UIMenu.menuCategory = 3; }; ui._w = _w; ui.t.ELEMENT_OFFSET = ELEMENT_OFFSET; @@ -1045,7 +1053,7 @@ class UITrait extends iron.Trait { var panelx = (iron.App.x() - toolbarw) + menubarw; if (App.C.ui_layout == 1 && (UINodes.inst.show || UIView2D.inst.show)) panelx = panelx - App.w() - toolbarw; - if (ui.window(workspaceHandle, panelx, 0, kha.System.windowWidth() - windowW - menubarw, Std.int((ui.t.ELEMENT_H + 2) * ui.SCALE))) { + if (ui.window(workspaceHandle, panelx, 0, System.windowWidth() - windowW - menubarw, Std.int((ui.t.ELEMENT_H + 2) * ui.SCALE))) { ui.tab(worktab, "Paint"); // ui.tab(worktab, "Sculpt"); ui.tab(worktab, "Scene"); @@ -1068,7 +1076,7 @@ class UITrait extends iron.Trait { var panelx = iron.App.x(); if (App.C.ui_layout == 1 && (UINodes.inst.show || UIView2D.inst.show)) panelx = panelx - App.w() - toolbarw; - if (ui.window(headerHandle, panelx, headerh, kha.System.windowWidth() - toolbarw - windowW, Std.int((ui.t.ELEMENT_H + 2) * ui.SCALE))) { + if (ui.window(headerHandle, panelx, headerh, System.windowWidth() - toolbarw - windowW, Std.int((ui.t.ELEMENT_H + 2) * ui.SCALE))) { if (UITrait.inst.worktab.position == SpacePaint) { @@ -1172,7 +1180,7 @@ class UITrait extends iron.Trait { } } if (selectedTool == ToolText) { - ui.combo(textToolHandle, arm.io.Importer.fontList, "Font"); + ui.combo(textToolHandle, Importer.fontList, "Font"); var h = Id.handle(); h.text = textToolText; textToolText = ui.textInput(h, ""); @@ -1228,9 +1236,9 @@ class UITrait extends iron.Trait { } } - if (ui.window(statusHandle, iron.App.x(), kha.System.windowHeight() - headerh, kha.System.windowWidth() - toolbarw - windowW, headerh)) { + if (ui.window(statusHandle, iron.App.x(), System.windowHeight() - headerh, System.windowWidth() - toolbarw - windowW, headerh)) { - var scene = iron.Scene.active; + var scene = Scene.active; var cam = scene.cameras[0]; cameraControls = ui.combo(Id.handle({position: cameraControls}), ["Rotate", "Orbit", "Fly"], "Controls"); cameraType = ui.combo(camHandle, ["Perspective", "Orthographic"], "Type"); @@ -1254,8 +1262,8 @@ class UITrait extends iron.Trait { } } - tabx = App.C.ui_layout == 0 ? kha.System.windowWidth() - windowW : 0; - tabh = Std.int(kha.System.windowHeight() / 3); + tabx = App.C.ui_layout == 0 ? System.windowWidth() - windowW : 0; + tabh = Std.int(System.windowHeight() / 3); gizmo.visible = false; if (worktab.position == SpacePaint) { @@ -1437,8 +1445,8 @@ class UITrait extends iron.Trait { setLayer(l); } if (state == State.Started) { - if (iron.system.Time.time() - selectTime < 0.25) show2DView(); - selectTime = iron.system.Time.time(); + if (Time.time() - selectTime < 0.25) show2DView(); + selectTime = Time.time(); } if (l.texpaint_mask != null) { @@ -1467,8 +1475,8 @@ class UITrait extends iron.Trait { setLayer(l, true); } if (state == State.Started) { - if (iron.system.Time.time() - selectTime < 0.25) show2DView(); - selectTime = iron.system.Time.time(); + if (Time.time() - selectTime < 0.25) show2DView(); + selectTime = Time.time(); } } @@ -1679,14 +1687,14 @@ class UITrait extends iron.Trait { #end App.C.window_scale = hscale.value; ui.setScale(hscale.value); - arm.App.uibox.setScale(hscale.value); + App.uibox.setScale(hscale.value); UINodes.inst.ui.setScale(hscale.value); UIView2D.inst.ui.setScale(hscale.value); windowW = Std.int(defaultWindowW * App.C.window_scale); toolbarw = Std.int(defaultToolbarW * App.C.window_scale); headerh = Std.int(defaultHeaderH * App.C.window_scale); menubarw = Std.int(215 * App.C.window_scale); - arm.App.resize(); + App.resize(); armory.data.Config.save(); setIconScale(); } @@ -1695,7 +1703,7 @@ class UITrait extends iron.Trait { var layHandle = Id.handle({position: App.C.ui_layout}); App.C.ui_layout = ui.combo(layHandle, ["Right", "Left"], "Layout", true); if (layHandle.changed) { - arm.App.resize(); + App.resize(); armory.data.Config.save(); } var themeHandle = Id.handle({position: 0}); @@ -1704,14 +1712,14 @@ class UITrait extends iron.Trait { if (themeHandle.changed) { var theme = themes[themeHandle.position].toLowerCase(); if (theme == "dark") { // Built-in default - arm.App.theme = zui.Themes.dark; + App.theme = zui.Themes.dark; } else { - iron.data.Data.getBlob("themes/theme_" + theme + ".arm", function(b:kha.Blob) { - arm.App.theme = haxe.Json.parse(b.toString()); + Data.getBlob("themes/theme_" + theme + ".arm", function(b:kha.Blob) { + App.theme = haxe.Json.parse(b.toString()); }); } - ui.t = arm.App.theme; + ui.t = App.theme; // UINodes.inst.applyTheme(); headerHandle.redraws = 2; toolbarHandle.redraws = 2; @@ -1841,10 +1849,10 @@ class UITrait extends iron.Trait { } public function removeMaterialCache() { - iron.data.Data.cachedMaterials.remove("SceneMaterial2"); - iron.data.Data.cachedShaders.remove("Material2_data"); - iron.data.Data.cachedSceneRaws.remove("Material2_data"); - // iron.data.Data.cachedBlobs.remove("Material2_data.arm"); + Data.cachedMaterials.remove("SceneMaterial2"); + Data.cachedShaders.remove("Material2_data"); + Data.cachedSceneRaws.remove("Material2_data"); + // Data.cachedBlobs.remove("Material2_data.arm"); } function getSelectedMaterial() { return worktab.position == SpaceScene ? selectedMaterialScene : selectedMaterial; } @@ -1861,7 +1869,7 @@ class UITrait extends iron.Trait { if (isScene) { if (selectedObject != paintObject && Std.is(selectedObject, iron.object.MeshObject)) { removeMaterialCache(); - iron.data.Data.getMaterial("Scene", "Material2", function(md:iron.data.MaterialData) { + Data.getMaterial("Scene", "Material2", function(md:iron.data.MaterialData) { ui.g.end(); md.name = "Material2." + materials.length; selectedMaterialScene = new MaterialSlot(md); @@ -1887,16 +1895,15 @@ class UITrait extends iron.Trait { } if (ui.button("Import")) { - arm.App.showFiles = true; - @:privateAccess Ext.lastPath = ""; // Refresh - arm.App.whandle.redraws = 2; - arm.App.foldersOnly = false; - arm.App.showFilename = false; + App.showFiles = true; + App.whandle.redraws = 2; + App.foldersOnly = false; + App.showFilename = false; UIFiles.filters = "arm,blend"; - arm.App.filesDone = function(path:String) { + App.filesDone = function(path:String) { StringTools.endsWith(path, ".blend") ? - arm.io.ImportBlend.runMaterial(path) : - arm.io.ImportArm.runMaterial(path); + ImportBlend.runMaterial(path) : + ImportArm.runMaterial(path); } } @@ -1939,12 +1946,12 @@ class UITrait extends iron.Trait { var state = materials[i].previewReady ? ui.image(img) : ui.image(Res.get('icons.png'), -1, null, imgw, imgw, imgw, imgw); if (state == State.Started) { if (getSelectedMaterial() != materials[i]) selectMaterial(i); - if (iron.system.Time.time() - selectTime < 0.25) showMaterialNodes(); - selectTime = iron.system.Time.time(); - var mouse = iron.system.Input.getMouse(); - arm.App.dragOffX = -(mouse.x - uix - ui._windowX + iron.App.x() - 3); - arm.App.dragOffY = -(mouse.y - uiy - ui._windowY + iron.App.y() + 1); - arm.App.dragMaterial = getSelectedMaterial(); + if (Time.time() - selectTime < 0.25) showMaterialNodes(); + selectTime = Time.time(); + var mouse = Input.getMouse(); + App.dragOffX = -(mouse.x - uix - ui._windowX + iron.App.x() - 3); + App.dragOffY = -(mouse.y - uiy - ui._windowY + iron.App.y() + 1); + App.dragMaterial = getSelectedMaterial(); } if (ui.isHovered && ui.inputReleasedR) { UIMenu.show(function(ui:Zui) { @@ -2032,14 +2039,13 @@ class UITrait extends iron.Trait { ui.row([1/4, 1/4]); if (ui.button("Import")) { - arm.App.showFiles = true; - @:privateAccess Ext.lastPath = ""; // Refresh - arm.App.whandle.redraws = 2; - arm.App.foldersOnly = false; - arm.App.showFilename = false; + App.showFiles = true; + App.whandle.redraws = 2; + App.foldersOnly = false; + App.showFilename = false; UIFiles.filters = "jpg,png,tga,hdr"; - arm.App.filesDone = function(path:String) { - arm.io.Importer.importFile(path); + App.filesDone = function(path:String) { + Importer.importFile(path); } } if (ui.isHovered) ui.tooltip("Import texture file (Ctrl + Shift + I)"); @@ -2069,14 +2075,14 @@ class UITrait extends iron.Trait { var uix = ui._x; var uiy = ui._y; if (ui.image(img) == State.Started) { - var mouse = iron.system.Input.getMouse(); - arm.App.dragOffX = -(mouse.x - uix - ui._windowX + iron.App.x() - 3); - arm.App.dragOffY = -(mouse.y - uiy - ui._windowY + iron.App.y() + 1); - arm.App.dragAsset = asset; + var mouse = Input.getMouse(); + App.dragOffX = -(mouse.x - uix - ui._windowX + iron.App.x() - 3); + App.dragOffY = -(mouse.y - uiy - ui._windowY + iron.App.y() + 1); + App.dragAsset = asset; selectedTexture = asset; - if (iron.system.Time.time() - selectTime < 0.25) show2DView(1); - selectTime = iron.system.Time.time(); + if (Time.time() - selectTime < 0.25) show2DView(1); + selectTime = Time.time(); } if (ui.isHovered) ui.tooltipImage(img, 256); @@ -2090,8 +2096,8 @@ class UITrait extends iron.Trait { } if (ui.button("Delete", Left)) { hwnd2.redraws = 2; - iron.data.Data.deleteImage(asset.file); - Canvas.assetMap.remove(asset.id); + Data.deleteImage(asset.file); + zui.Canvas.assetMap.remove(asset.id); assets.splice(i, 1); assetNames.splice(i, 1); // TODO: rebuild affected materials @@ -2116,7 +2122,7 @@ class UITrait extends iron.Trait { } } - public function createImageMask(asset:TAsset) { + public function createImageMask(asset:zui.Canvas.TAsset) { var l = UITrait.inst.selectedLayer; if (l != UITrait.inst.layers[0]) { l.createMask(0x00000000, true, UITrait.inst.getImage(asset)); @@ -2126,14 +2132,13 @@ class UITrait extends iron.Trait { } function importMesh() { - arm.App.showFiles = true; - @:privateAccess Ext.lastPath = ""; // Refresh - arm.App.whandle.redraws = 2; - arm.App.foldersOnly = false; - arm.App.showFilename = false; + App.showFiles = true; + App.whandle.redraws = 2; + App.foldersOnly = false; + App.showFilename = false; UIFiles.filters = "obj,fbx,blend,gltf,arm"; - arm.App.filesDone = function(path:String) { - arm.io.Importer.importFile(path); + App.filesDone = function(path:String) { + Importer.importFile(path); } } @@ -2196,14 +2201,13 @@ class UITrait extends iron.Trait { if (ui.tab(htab2, "Export")) { if (ui.panel(Id.handle({selected: true}), "Export Textures", 1)) { if (ui.button("Export")) { - arm.App.showFiles = true; - @:privateAccess Ext.lastPath = ""; // Refresh - arm.App.whandle.redraws = 2; - arm.App.foldersOnly = true; - arm.App.showFilename = true; + App.showFiles = true; + App.whandle.redraws = 2; + App.foldersOnly = true; + App.showFilename = true; // var path = 'C:\\Users\\lubos\\Documents\\'; UIFiles.filters = bitsHandle.position > 0 ? "exr" : formatType == 0 ? "png" : "jpg"; - arm.App.filesDone = function(path:String) { + App.filesDone = function(path:String) { textureExport = true; textureExportPath = path; } @@ -2272,16 +2276,15 @@ class UITrait extends iron.Trait { ui.separator(); if (ui.panel(Id.handle({selected: false}), "Export Mesh", 1)) { if (ui.button("Export")) { - arm.App.showFiles = true; - @:privateAccess Ext.lastPath = ""; // Refresh - arm.App.whandle.redraws = 2; - arm.App.foldersOnly = true; - arm.App.showFilename = true; + App.showFiles = true; + App.whandle.redraws = 2; + App.foldersOnly = true; + App.showFilename = true; UIFiles.filters = exportMeshFormat == 0 ? "obj" : "arm"; - arm.App.filesDone = function(path:String) { - var f = arm.App.filenameHandle.text; + App.filesDone = function(path:String) { + var f = App.filenameHandle.text; if (f == "") f = "untitled"; - arm.io.Exporter.exportMesh(path + "/" + f); + Exporter.exportMesh(path + "/" + f); }; } exportMeshFormat = ui.combo(Id.handle({position: exportMeshFormat}), ["obj", "arm"], "Format", true); @@ -2296,23 +2299,22 @@ class UITrait extends iron.Trait { function tabViewport() { if (ui.tab(htab2, "Viewport")) { if (ui.button("Import Envmap")) { - arm.App.showFiles = true; - @:privateAccess Ext.lastPath = ""; // Refresh - arm.App.whandle.redraws = 2; - arm.App.foldersOnly = false; - arm.App.showFilename = false; + App.showFiles = true; + App.whandle.redraws = 2; + App.foldersOnly = false; + App.showFilename = false; UIFiles.filters = "hdr"; - arm.App.filesDone = function(path:String) { + App.filesDone = function(path:String) { if (!StringTools.endsWith(path, ".hdr")) { UITrait.inst.showError("Error: .hdr file expected"); return; } - arm.io.Importer.importFile(path); + Importer.importFile(path); } } - if (iron.Scene.active.world.probe.radianceMipmaps.length > 0) { - ui.image(iron.Scene.active.world.probe.radianceMipmaps[0]); + if (Scene.active.world.probe.radianceMipmaps.length > 0) { + ui.image(Scene.active.world.probe.radianceMipmaps[0]); } ui.row([1/2, 1/2]); @@ -2321,14 +2323,14 @@ class UITrait extends iron.Trait { if (modeHandle.changed) { MaterialParser.parseMeshMaterial(); } - var p = iron.Scene.active.world.probe; + var p = Scene.active.world.probe; var envHandle = Id.handle({value: p.raw.strength}); p.raw.strength = ui.slider(envHandle, "Environment", 0.0, 8.0, true); if (envHandle.changed) ddirty = 2; ui.row([1/2, 1/2]); - if (iron.Scene.active.lights.length > 0) { - var light = iron.Scene.active.lights[0]; + if (Scene.active.lights.length > 0) { + var light = Scene.active.lights[0]; var sxhandle = Id.handle(); var f32:kha.FastFloat = light.data.raw.size; // hl fix @@ -2361,7 +2363,7 @@ class UITrait extends iron.Trait { showEnvmap = ui.check(showEnvmapHandle, "Envmap"); if (showEnvmapHandle.changed) { - var world = iron.Scene.active.world; + var world = Scene.active.world; world.loadEnvmap(function(_) {}); savedEnvmap = world.envmap; ddirty = 2; @@ -2370,7 +2372,7 @@ class UITrait extends iron.Trait { if (showEnvmap) { showEnvmapBlur = ui.check(showEnvmapBlurHandle, "Blurred"); if (showEnvmapBlurHandle.changed) { - var probe = iron.Scene.active.world.probe; + var probe = Scene.active.world.probe; savedEnvmap = showEnvmapBlur ? probe.radianceMipmaps[0] : probe.radiance; ddirty = 2; } @@ -2386,17 +2388,17 @@ class UITrait extends iron.Trait { // b.set(2, worldColor.Bb); // emptyEnvmap.unlock(); // emptyEnvmap.unload(); // - var b = haxe.io.Bytes.alloc(4); + var b = Bytes.alloc(4); b.set(0, worldColor.Rb); b.set(1, worldColor.Gb); b.set(2, worldColor.Bb); b.set(3, 255); - emptyEnvmap = kha.Image.fromBytes(b, 1, 1); + emptyEnvmap = Image.fromBytes(b, 1, 1); ddirty = 2; } } } - iron.Scene.active.world.envmap = showEnvmap ? savedEnvmap : emptyEnvmap; + Scene.active.world.envmap = showEnvmap ? savedEnvmap : emptyEnvmap; } } @@ -2433,7 +2435,7 @@ class UITrait extends iron.Trait { } } } - for (c in iron.Scene.active.root.children) { + for (c in Scene.active.root.children) { drawList(Id.handle(), c); } } @@ -2458,17 +2460,17 @@ class UITrait extends iron.Trait { ui.text("Location"); h = Id.handle(); - h.text = Math.roundfp(loc.x) + ""; + h.text = roundfp(loc.x) + ""; f = Std.parseFloat(ui.textInput(h, "X")); if (h.changed) { loc.x = f; ddirty = 2; } h = Id.handle(); - h.text = Math.roundfp(loc.y) + ""; + h.text = roundfp(loc.y) + ""; f = Std.parseFloat(ui.textInput(h, "Y")); if (h.changed) { loc.y = f; ddirty = 2; } h = Id.handle(); - h.text = Math.roundfp(loc.z) + ""; + h.text = roundfp(loc.z) + ""; f = Std.parseFloat(ui.textInput(h, "Z")); if (h.changed) { loc.z = f; ddirty = 2; } @@ -2476,18 +2478,18 @@ class UITrait extends iron.Trait { ui.text("Rotation"); h = Id.handle(); - h.text = Math.roundfp(rot.x) + ""; + h.text = roundfp(rot.x) + ""; f = Std.parseFloat(ui.textInput(h, "X")); var changed = false; if (h.changed) { changed = true; rot.x = f; ddirty = 2; } h = Id.handle(); - h.text = Math.roundfp(rot.y) + ""; + h.text = roundfp(rot.y) + ""; f = Std.parseFloat(ui.textInput(h, "Y")); if (h.changed) { changed = true; rot.y = f; ddirty = 2; } h = Id.handle(); - h.text = Math.roundfp(rot.z) + ""; + h.text = roundfp(rot.z) + ""; f = Std.parseFloat(ui.textInput(h, "Z")); if (h.changed) { changed = true; rot.z = f; ddirty = 2; } @@ -2505,24 +2507,24 @@ class UITrait extends iron.Trait { ui.text("Scale"); h = Id.handle(); - h.text = Math.roundfp(scale.x) + ""; + h.text = roundfp(scale.x) + ""; f = Std.parseFloat(ui.textInput(h, "X")); if (h.changed) { scale.x = f; ddirty = 2; } h = Id.handle(); - h.text = Math.roundfp(scale.y) + ""; + h.text = roundfp(scale.y) + ""; f = Std.parseFloat(ui.textInput(h, "Y")); if (h.changed) { scale.y = f; ddirty = 2; } h = Id.handle(); - h.text = Math.roundfp(scale.z) + ""; + h.text = roundfp(scale.z) + ""; f = Std.parseFloat(ui.textInput(h, "Z")); if (h.changed) { scale.z = f; ddirty = 2; } selectedObject.transform.dirty = true; if (selectedObject.name == "Scene") { - var p = iron.Scene.active.world.probe; + var p = Scene.active.world.probe; var envHandle = Id.handle({value: p.raw.strength}); p.raw.strength = ui.slider(envHandle, "Strength", 0.0, 5.0, true); if (envHandle.changed) { @@ -2540,7 +2542,7 @@ class UITrait extends iron.Trait { } } else if (Std.is(selectedObject, iron.object.CameraObject)) { - var scene = iron.Scene.active; + 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); @@ -2554,7 +2556,7 @@ class UITrait extends iron.Trait { } function shortcut(s:String):Bool { - var kb = iron.system.Input.getKeyboard(); + var kb = Input.getKeyboard(); var flag = true; var plus = s.indexOf("+"); if (plus > 0) { @@ -2565,4 +2567,9 @@ class UITrait extends iron.Trait { } return flag && kb.started(s); } + + static function roundfp(f:Float, precision = 2):Float { + f *= std.Math.pow(10, precision); + return std.Math.round(f) / std.Math.pow(10, precision); + } } diff --git a/Sources/arm/ui/UIView2D.hx b/Sources/arm/ui/UIView2D.hx index 7f63b1e2..1441aae6 100644 --- a/Sources/arm/ui/UIView2D.hx +++ b/Sources/arm/ui/UIView2D.hx @@ -1,11 +1,22 @@ package arm.ui; +import kha.System; +import kha.Image; +import kha.graphics4.PipelineState; +import kha.graphics4.VertexShader; +import kha.graphics4.FragmentShader; +import kha.graphics4.VertexStructure; +import kha.graphics4.VertexData; +import kha.graphics4.BlendingFactor; import zui.Zui; import zui.Id; +import iron.system.Input; import arm.util.UVUtil; +import arm.data.ConstData; +import arm.App; @:access(zui.Zui) -class UIView2D extends iron.Trait { +class UIView2D { public static var inst:UIView2D; public var show = false; @@ -19,36 +30,35 @@ class UIView2D extends iron.Trait { public var panX = 0.0; public var panY = 0.0; public var panScale = 1.0; - var pipe:kha.graphics4.PipelineState; + var pipe:PipelineState; var texType = 0; var uvmapShow = false; public function new() { - super(); inst = this; - pipe = new kha.graphics4.PipelineState(); - pipe.vertexShader = kha.graphics4.VertexShader.fromSource(arm.data.ConstData.layerViewVert); - pipe.fragmentShader = kha.graphics4.FragmentShader.fromSource(arm.data.ConstData.layerViewFrag); - var vs = new kha.graphics4.VertexStructure(); - vs.add("pos", kha.graphics4.VertexData.Float3); - vs.add("tex", kha.graphics4.VertexData.Float2); - vs.add("col", kha.graphics4.VertexData.Float4); + pipe = new PipelineState(); + pipe.vertexShader = VertexShader.fromSource(ConstData.layerViewVert); + pipe.fragmentShader = FragmentShader.fromSource(ConstData.layerViewFrag); + var vs = new VertexStructure(); + vs.add("pos", VertexData.Float3); + vs.add("tex", VertexData.Float2); + vs.add("col", VertexData.Float4); pipe.inputLayout = [vs]; - pipe.blendSource = kha.graphics4.BlendingFactor.BlendOne; - pipe.blendDestination = kha.graphics4.BlendingFactor.BlendZero; + pipe.blendSource = BlendingFactor.BlendOne; + pipe.blendDestination = BlendingFactor.BlendZero; pipe.colorWriteMaskAlpha = false; pipe.compile(); - var t = Reflect.copy(arm.App.theme); + var t = Reflect.copy(App.theme); t.ELEMENT_H = 18; t.BUTTON_H = 16; var scale = armory.data.Config.raw.window_scale; - ui = new Zui({font: arm.App.font, theme: t, color_wheel: arm.App.color_wheel, scaleFactor: scale}); + ui = new Zui({font: App.font, theme: t, color_wheel: App.color_wheel, scaleFactor: scale}); ui.scrollEnabled = false; - notifyOnRender2D(render); - notifyOnUpdate(update); + iron.App.notifyOnRender2D(render); + iron.App.notifyOnUpdate(update); } function render(g:kha.graphics2.Graphics) { @@ -59,7 +69,7 @@ class UIView2D extends iron.Trait { wy = UITrait.inst.headerh * 2; if (!show) return; - if (kha.System.windowWidth() == 0 || kha.System.windowHeight() == 0) return; + if (System.windowWidth() == 0 || System.windowHeight() == 0) return; if (UITrait.inst.pdirty >= 0) hwnd.redraws = 2; // Paint was active @@ -89,7 +99,7 @@ class UIView2D extends iron.Trait { // Texture ui.g.pipeline = pipe; var l = UITrait.inst.selectedLayer; - var tex:kha.Image = null; + var tex:Image = null; if (type == 0) { // Layer tex = texType == 0 ? l.texpaint : texType == 1 ? l.texpaint_nor : l.texpaint_pack; @@ -168,13 +178,13 @@ class UIView2D extends iron.Trait { } function update() { - var m = iron.system.Input.getMouse(); - var kb = iron.system.Input.getKeyboard(); + var m = Input.getMouse(); + var kb = Input.getKeyboard(); var headerh = ui.ELEMENT_H() * 1.4; UITrait.inst.paint2d = false; - if (!arm.App.uienabled || + if (!App.uienabled || !show || m.x + App.x() < wx || m.x + App.x() > wx + ww || diff --git a/Sources/arm/util/MeshUtil.hx b/Sources/arm/util/MeshUtil.hx index d3293d7c..4c96d105 100644 --- a/Sources/arm/util/MeshUtil.hx +++ b/Sources/arm/util/MeshUtil.hx @@ -1,8 +1,12 @@ package arm.util; +import kha.arrays.Int16Array; +import kha.arrays.Uint32Array; import iron.data.SceneFormat; import iron.data.MeshData; +import iron.data.Data; import iron.object.MeshObject; +import iron.math.Vec4; import arm.ui.UITrait; class MeshUtil { @@ -18,10 +22,10 @@ class MeshUtil { if (paintObjects[i].data.scalePos > maxScale) maxScale = paintObjects[i].data.scalePos; } vlen = Std.int(vlen / 4); - var va0 = new kha.arrays.Int16Array(vlen * 4); - var va1 = new kha.arrays.Int16Array(vlen * 2); - var va2 = new kha.arrays.Int16Array(vlen * 2); - var ia = new kha.arrays.Uint32Array(ilen); + var va0 = new Int16Array(vlen * 4); + var va1 = new Int16Array(vlen * 2); + var va2 = new Int16Array(vlen * 2); + var ia = new Uint32Array(ilen); var voff = 0; var ioff = 0; @@ -109,7 +113,7 @@ class MeshUtil { if (UITrait.inst.mergedObject != null) { UITrait.inst.mergedObject.remove(); - iron.data.Data.deleteMesh(UITrait.inst.mergedObject.data.handle); + Data.deleteMesh(UITrait.inst.mergedObject.data.handle); UITrait.inst.mergedObject = null; } mergeMesh(); @@ -129,11 +133,11 @@ class MeshUtil { } public static function calcNormals() { - var va = new iron.math.Vec4(); - var vb = new iron.math.Vec4(); - var vc = new iron.math.Vec4(); - var cb = new iron.math.Vec4(); - var ab = new iron.math.Vec4(); + var va = new Vec4(); + var vb = new Vec4(); + var vc = new Vec4(); + var cb = new Vec4(); + var ab = new Vec4(); for (p in UITrait.inst.paintObjects) { var g = p.data.geom; var inda = g.indices[0]; diff --git a/Sources/arm/util/RenderUtil.hx b/Sources/arm/util/RenderUtil.hx index 32df96e4..e1a0ebbe 100644 --- a/Sources/arm/util/RenderUtil.hx +++ b/Sources/arm/util/RenderUtil.hx @@ -1,9 +1,15 @@ package arm.util; +import kha.Image; +import kha.graphics4.TextureFormat; import iron.Scene; +import iron.RenderPath; import iron.object.MeshObject; import iron.math.Mat4; import arm.ui.UITrait; +import arm.render.RenderPathPreview; +import arm.render.RenderPathDeferred; +import arm.nodes.MaterialParser; import arm.Tool; class RenderUtil { @@ -44,19 +50,19 @@ class RenderUtil { probe.raw.strength = 4; Scene.active.world.envmap = UITrait.inst.previewEnvmap; // No resize - @:privateAccess iron.RenderPath.active.lastW = matPreviewSize; - @:privateAccess iron.RenderPath.active.lastH = matPreviewSize; + @:privateAccess RenderPath.active.lastW = matPreviewSize; + @:privateAccess RenderPath.active.lastH = matPreviewSize; Scene.active.camera.buildProjection(); Scene.active.camera.buildMatrix(); - arm.nodes.MaterialParser.parseMeshPreviewMaterial(); - iron.RenderPath.active.commands = arm.render.RenderPathPreview.commandsPreview; - iron.RenderPath.active.renderFrame(iron.RenderPath.active.frameG); - iron.RenderPath.active.commands = arm.render.RenderPathDeferred.commands; + MaterialParser.parseMeshPreviewMaterial(); + RenderPath.active.commands = RenderPathPreview.commandsPreview; + RenderPath.active.renderFrame(RenderPath.active.frameG); + RenderPath.active.commands = RenderPathDeferred.commands; UITrait.inst.materialPreview = false; - @:privateAccess iron.RenderPath.active.lastW = iron.App.w(); - @:privateAccess iron.RenderPath.active.lastH = iron.App.h(); + @:privateAccess RenderPath.active.lastW = iron.App.w(); + @:privateAccess RenderPath.active.lastH = iron.App.h(); // Restore sphere.visible = false; @@ -71,13 +77,13 @@ class RenderUtil { light.data.raw.strength = savedLight; probe.raw.strength = savedProbe; Scene.active.world.envmap = UITrait.inst.showEnvmap ? UITrait.inst.savedEnvmap : UITrait.inst.emptyEnvmap; - arm.nodes.MaterialParser.parseMeshMaterial(); + MaterialParser.parseMeshMaterial(); UITrait.inst.ddirty = 0; } public static function makeDecalPreview() { if (UITrait.inst.decalImage == null) { - UITrait.inst.decalImage = kha.Image.createRenderTarget(arm.util.RenderUtil.decalPreviewSize, arm.util.RenderUtil.decalPreviewSize); + UITrait.inst.decalImage = Image.createRenderTarget(RenderUtil.decalPreviewSize, RenderUtil.decalPreviewSize); } UITrait.inst.decalPreview = true; @@ -103,19 +109,19 @@ class RenderUtil { Scene.active.world.envmap = UITrait.inst.previewEnvmap; // No resize - @:privateAccess iron.RenderPath.active.lastW = arm.util.RenderUtil.decalPreviewSize; - @:privateAccess iron.RenderPath.active.lastH = arm.util.RenderUtil.decalPreviewSize; + @:privateAccess RenderPath.active.lastW = RenderUtil.decalPreviewSize; + @:privateAccess RenderPath.active.lastH = RenderUtil.decalPreviewSize; Scene.active.camera.buildProjection(); Scene.active.camera.buildMatrix(); - arm.nodes.MaterialParser.parseMeshPreviewMaterial(); - iron.RenderPath.active.commands = arm.render.RenderPathPreview.commandsDecal; - iron.RenderPath.active.renderFrame(iron.RenderPath.active.frameG); - iron.RenderPath.active.commands = arm.render.RenderPathDeferred.commands; + MaterialParser.parseMeshPreviewMaterial(); + RenderPath.active.commands = RenderPathPreview.commandsDecal; + RenderPath.active.renderFrame(RenderPath.active.frameG); + RenderPath.active.commands = RenderPathDeferred.commands; UITrait.inst.decalPreview = false; - @:privateAccess iron.RenderPath.active.lastW = iron.App.w(); - @:privateAccess iron.RenderPath.active.lastH = iron.App.h(); + @:privateAccess RenderPath.active.lastW = iron.App.w(); + @:privateAccess RenderPath.active.lastH = iron.App.h(); // Restore plane.visible = false; @@ -131,7 +137,7 @@ class RenderUtil { light.visible = true; Scene.active.world.envmap = UITrait.inst.showEnvmap ? UITrait.inst.savedEnvmap : UITrait.inst.emptyEnvmap; - arm.nodes.MaterialParser.parseMeshMaterial(); + MaterialParser.parseMeshMaterial(); UITrait.inst.ddirty = 0; } @@ -148,7 +154,7 @@ class RenderUtil { UITrait.inst.textToolImage = null; } if (UITrait.inst.textToolImage == null) { - UITrait.inst.textToolImage = kha.Image.createRenderTarget(texW, texW, kha.graphics4.TextureFormat.L8); + UITrait.inst.textToolImage = Image.createRenderTarget(texW, texW, TextureFormat.L8); } var g2 = UITrait.inst.textToolImage.g2; g2.begin(true, 0xff000000); @@ -163,7 +169,7 @@ class RenderUtil { var texw = 1024; var off = 12; if (UITrait.inst.decalMaskImage == null) { - UITrait.inst.decalMaskImage = kha.Image.createRenderTarget(texw, texw, kha.graphics4.TextureFormat.L8); + UITrait.inst.decalMaskImage = Image.createRenderTarget(texw, texw, TextureFormat.L8); } var g2 = UITrait.inst.decalMaskImage.g2; g2.begin(true, 0xff000000); diff --git a/Sources/arm/util/UVUtil.hx b/Sources/arm/util/UVUtil.hx index 5b1211b7..64d80e3a 100644 --- a/Sources/arm/util/UVUtil.hx +++ b/Sources/arm/util/UVUtil.hx @@ -1,12 +1,13 @@ package arm.util; +import kha.Image; import arm.ui.UITrait; class UVUtil { - public static var uvmap:kha.Image = null; + public static var uvmap:Image = null; public static var uvmapCached = false; - public static var trianglemap:kha.Image = null; + public static var trianglemap:Image = null; public static var trianglemapCached = false; public static function cacheUVMap() { @@ -14,7 +15,7 @@ class UVUtil { var res = Config.getTextureRes(); if (uvmap == null) { - uvmap = kha.Image.createRenderTarget(res, res); + uvmap = Image.createRenderTarget(res, res); } uvmapCached = true; @@ -45,7 +46,7 @@ class UVUtil { var res = Config.getTextureRes(); if (trianglemap == null) { - trianglemap = kha.Image.createRenderTarget(res, res); + trianglemap = Image.createRenderTarget(res, res); } trianglemapCached = true; diff --git a/Sources/arm/util/ViewportUtil.hx b/Sources/arm/util/ViewportUtil.hx index 30c34fa8..cb0781f2 100644 --- a/Sources/arm/util/ViewportUtil.hx +++ b/Sources/arm/util/ViewportUtil.hx @@ -1,5 +1,7 @@ package arm.util; +import kha.arrays.Float32Array; +import iron.Scene; import iron.math.Vec4; import arm.ui.UITrait; @@ -19,9 +21,8 @@ class ViewportUtil { } public static function resetViewport() { - var scene = iron.Scene.active; - var cam = scene.camera; - for (o in scene.raw.objects) { + var cam = Scene.active.camera; + for (o in Scene.active.raw.objects) { if (o.type == 'camera_object') { cam.transform.local.setF32(o.transform.values); cam.transform.decompose(); @@ -39,8 +40,7 @@ class ViewportUtil { public static function setView(x:Float, y:Float, z:Float, rx:Float, ry:Float, rz:Float) { UITrait.inst.selectedObject.transform.rot.set(0, 0, 0, 1); UITrait.inst.selectedObject.transform.dirty = true; - var scene = iron.Scene.active; - var cam = scene.camera; + var cam = Scene.active.camera; var dist = cam.transform.loc.length(); cam.transform.loc.set(x * dist, y * dist, z * dist); cam.transform.rot.fromEuler(rx, ry, rz); @@ -51,24 +51,24 @@ class ViewportUtil { } public static function orbit(x:Float, y:Float) { - var camera = iron.Scene.active.camera; + var cam = Scene.active.camera; var dist = arm.plugin.OrbitCamera.dist; - camera.transform.move(camera.lookWorld(), dist); - camera.transform.rotate(new iron.math.Vec4(0, 0, 1), x); - camera.transform.rotate(camera.rightWorld(), y); - camera.transform.move(camera.lookWorld(), -dist); + cam.transform.move(cam.lookWorld(), dist); + cam.transform.rotate(new Vec4(0, 0, 1), x); + cam.transform.rotate(cam.rightWorld(), y); + cam.transform.move(cam.lookWorld(), -dist); UITrait.inst.ddirty = 2; } public static function updateCameraType(cameraType:Int) { - var cam = iron.Scene.active.cameras[0]; - var light = iron.Scene.active.lights[0]; + var cam = Scene.active.cameras[0]; + var light = Scene.active.lights[0]; if (cameraType == 0) { cam.data.raw.ortho = null; light.visible = true; } else { - var f32 = new kha.arrays.Float32Array(4); + var f32 = new Float32Array(4); var f = cam.data.raw.fov * cam.transform.world.getLoc().length() / 2.5; f32[0] = -2 * f; f32[1] = 2 * f;