Editor Scripts šŸ”„: Alpha Release

I tried to get the Box Node pivot but got
ERROR:EXT: /editor-script-align/editor-script-align.editor_script:106 BoxNode has no "pivot" property
This got me to try all fo them and these are not available:
size_mode, texture, slice_9, color, alpha, layer, blend_mode, pivot, x_anchor, y_anchor, adjust_mode, clipping_mode

These are the ones you can get on a Box Node:
position, rotation, scale, size, inherit_alpha, clipping_visible, clipping_inverted

Ticket #2819

I am trying to do everything with shell script because mixing shell and functions are impossible.

I have a shell script I want to copy to "./build/editor-scripts/" the first time I run the script the folder isnā€™t there. Therefore I have to create it I donā€™t hae access to os.execute so I need to do

command = {"mkdir" ,"-p", "./build/editor-scripts/"}

After the folder is created I want move the file into it. The normal way to do this is with file:write but becuase I am now in the return statement of the "run" function I canā€™t use any lua. Therefore I need to rediret the output of the shell file into the new file.

command = {"echo", editor.get("/editor-script-cleanup/scripts/extend_path.sh", "text"), ">", "./build/editor-scripts/extend_path.sh"}

But it seem that the echo is only redirected to Defoldā€™s console regardless that I tell it to redirect it to the file, so no file is created.

Ticket #2821

Any other ideas how to do this?

Currently I donā€™t think there is a way to do this. Presumably you want to somehow extract shell scripts from a lib dependency zip file so that these shell scripts can be executed in response to menu commands in the editor?

Perhaps there needs to be a mechanism in place to extract and resolve paths to packaged shell scripts somehow?

Yeah, what I want to do is call a python script through a shell script because I need to source .bash_profile first. Some way to use files inside of a dendency would be very useful.

I can work around the problem in this particular case because it is a python script that will be called. I can assume that python is installed and maybe do something like [[f=open(]] .. create_this_file.. [[);f.write(]] .. with_this_content ..[[);f.close()]]

Since it looks like people are posting their editor scripts here, I figured Iā€™d chip in and post my lifecycle script that auto-implements this fix for slow HTML5 bundles on certain browsers. The only caveat is that you have to output the bundle into the project directory so Lua can access it. Iā€™m also not very experienced with IO and string manipulation, so feel free to suggest improvements! Anyways, here it is:

Code
local M = {}

local function read(file)
    local data = ""
    for l in file:lines() do
        data = data .. l .. "\n"
    end
    return data
end

function M.on_bundle_finished(opts)
    if opts.platform == "js-web" and opts.success then
        local title = sys.get_config("project.title", "Desktop Game")
        local file = io.open(opts.output_directory .. "/" .. title .. "/index.html", "r")
        local fixed = string.gsub(read(file), "engine_arguments: %[%]", "engine_arguments: [\"--verify-graphics-calls=false\"]")
        file:close()

        file = io.open(opts.output_directory .. "/" .. title .."/index.html", "wb")
        file:write(fixed)
        file:flush()
        file:close()
    end
end

return M
5 Likes

editor-script-lua-format - Format your Lua code!

Adds a right click context menu item ā€œFormat Documentā€ for .lua, .script, .editor_script, .render_script, .gui_script files to format them with lua-format.

Installation

Download repo as .zip, simply copy ā€œeditor-script-lua-formatā€ folder to your project and reload editor scripts. Done!

Known Issues

  • Not tested yet on Linux and macOS.
  • Binary executable files are from vscode-lua-format repo.
  • Canā€™t be used as dependency library :sob:. Simply copy paste the script folder into your project.

Changelog

2020-01-11: I added Git pre-commit hook sample to the repo. It formats staged Lua files to keep your code fabulous!
2020-01-13: Binary executable files are built using Travis CI and AppVeyor.

4 Likes

Why? Ah, because of the binary file you need to run to format the code?

Thatā€™s great!
Shame that we donā€™t support binaries in dependencies, seems like a very demanded featureā€¦

3 Likes

Maybe disallow it for lib ones but do allow it for ones actually in the project folder? Or is that how it already is?

1 Like

Yes, because of that.

Yes, itā€™s already that.

1 Like

I added Git pre-commit hook sample to the repo. It formats staged Lua files to keep your code fabulous :smile:

1 Like

Why donā€™t we support that?
Itā€™s a zip file, and it supports exe files. Do we do something special in the editor to remove executables?
@vlaaad @britzl

4 Likes

We donā€™t do anything special to prevent using binaries from dependencies, itā€™s just not possible currently because dependent library is a zip file, and to execute binary we need to extract it first from the archive.

4 Likes

Ah, good point.
Well, so if weā€™d add a method to write a resource out to disc, one could then execute it.

4 Likes

Feature request:
ā€œadd shortcuts (hotkeys) for editor scriptsā€
Would be useful for scripts that work with nodes transformation (ordering, aligns, transform reset etc).

12 Likes

A little collection of editor scripts for isometric scene:

Grab it here:

This is what I would like hotkeys for.

14 Likes

We need a right click context menu in the viewport. :slight_smile:

3 Likes

as variant, this dramatically reduces a day cursor movement :slight_smile:

2 Likes

Also in the text editor with the items from the ā€œEditā€ menu.

2 Likes

The one I would love the most to get personally is still editor.get(id, "parent") #2815. It would make quite a lot more stuff possible, a ā€œbig bang for the buckā€ :stuck_out_tongue: .

8 Likes