From 972bc89efb195c3ff01f6cd085fdfaa16324b013 Mon Sep 17 00:00:00 2001 From: Insality Date: Mon, 24 Nov 2025 10:37:42 +0200 Subject: [PATCH] Add create Druid collection script --- .../create_druid_collection.lua | 59 +++++++++++++++++++ druid/editor_scripts/druid.editor_script | 14 +++++ 2 files changed, 73 insertions(+) create mode 100644 druid/editor_scripts/create_druid_collection.lua diff --git a/druid/editor_scripts/create_druid_collection.lua b/druid/editor_scripts/create_druid_collection.lua new file mode 100644 index 0000000..ef6d8fa --- /dev/null +++ b/druid/editor_scripts/create_druid_collection.lua @@ -0,0 +1,59 @@ +local M = {} + +function M.create_druid_collection(selection) + local gui_filepath = editor.get(selection, "path") + print("Create Druid Collection for", gui_filepath) + + local absolute_project_path = editor.external_file_attributes(".").path + local collection_resource_path = gui_filepath:gsub("%.gui$", ".collection") + local new_collection_absolute_path = absolute_project_path .. collection_resource_path + + local filename = gui_filepath:match("([^/]+)%.gui$") + + -- Check if file already exists + local f = io.open(new_collection_absolute_path, "r") + if f then + f:close() + print("Collection file already exists at " .. new_collection_absolute_path) + return + end + + -- Template content + local template = [[name: "%s" +scale_along_z: 0 +embedded_instances { + id: "go" + data: "components {\n" + " id: \"%s\"\n" + " component: \"%s\"\n" + "}\n" + "" + position { + x: 0.0 + y: 0.0 + z: 0.0 + } + rotation { + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 + } +} +]] + local content = string.format(template, filename, filename, gui_filepath) + + -- Write file + local file, err = io.open(new_collection_absolute_path, "w") + if not file then + print("Error creating collection file:", err) + return + end + file:write(content) + file:close() + + print("Collection created: " .. collection_resource_path) +end + +return M + diff --git a/druid/editor_scripts/druid.editor_script b/druid/editor_scripts/druid.editor_script index 43057f8..3334bf5 100644 --- a/druid/editor_scripts/druid.editor_script +++ b/druid/editor_scripts/druid.editor_script @@ -1,6 +1,7 @@ local assign_layers = require("druid.editor_scripts.assign_layers") local create_druid_widget = require("druid.editor_scripts.create_druid_widget") local create_druid_gui_script = require("druid.editor_scripts.create_druid_gui_script") +local create_druid_collection = require("druid.editor_scripts.create_druid_collection") local druid_settings = require("druid.editor_scripts.druid_settings") local M = {} @@ -65,6 +66,19 @@ function M.get_commands() end }, + { + label = "[Druid] Create Druid Collection", + locations = { "Edit", "Assets" }, + query = { selection = {type = "resource", cardinality = "one"} }, + active = function(opts) + local path = editor.get(opts.selection, "path") + return path:match("%.gui$") ~= nil + end, + run = function(opts) + return create_druid_collection.create_druid_collection(opts.selection) + end + }, + { label = "[Druid] Settings", locations = { "Edit" },