From 000147c21dbdeacc4b65786c77d263bf87a4df24 Mon Sep 17 00:00:00 2001 From: Jamie Wells Date: Mon, 12 Oct 2026 21:05:28 +0000 Subject: [PATCH 1/2] Document Explorer selection gestures and multi-folder paste --- content/editor/explorer.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/content/editor/explorer.md b/content/editor/explorer.md index 3b5580e..044a36f 100644 --- a/content/editor/explorer.md +++ b/content/editor/explorer.md @@ -6,22 +6,28 @@ Prerequisites: a writable project and an existing asset file. Stop Play before r 1. Copy the model and its companion files into the project with your operating system's file manager. Keep glTF buffers/textures and OBJ dependencies in their required relative locations. 2. Find the model in Explorer. The viewport accepts `.obj`, `.gltf`, `.glb` and `.fbx` model drops. -3. Drag the file into the authoring viewport. The editor imports it, creates/reads its `.rmeta` sidecar and uses its Asset ID for scene instances. +3. Click the file once to highlight it, then press and hold on its highlighted name and drag it into the authoring viewport. The editor imports it, creates/reads its `.rmeta` sidecar and uses its Asset ID for scene instances. 4. Inspect the created object, save the scene and check Console for import errors. Expected result: an imported model appears as a scene object. A recognised extension alone does not guarantee that every file variant is supported. Keep the original source and metadata together; regenerating metadata may change identity. ## Files and scripts -The project separates assets, scenes, scripts, `ui/` Web assets, and configuration. **Programming → Object Component Script** creates and registers a script for the selected object; global and scene startup scopes also exist. Existing registered scripts can be attached through **Programming → Attach Existing Script** or Inspector. Double-clicking a script opens the external editor. Right-click (or two-finger click on a trackpad) offers **Set As → Global Startup Script**, **Scene Startup Script**, or **Object Component Script**. Select the target scene object first to enable Object Component Script. See [the scripting guides](/docs/scripting/lua) for each language's setup, including Luau registration and optional external runtimes. +The project separates assets, scenes, scripts, `ui/` Web assets, and configuration. **Programming → Object Component Script** creates and registers a script for the selected object; global and scene startup scopes also exist. Existing registered scripts can be attached through **Programming → Attach Existing Script** or Inspector. Right-click a script and choose **Open** to launch the external editor. Right-click (or two-finger click on a trackpad) offers **Set As → Global Startup Script**, **Scene Startup Script**, or **Object Component Script**. Select the target scene object first to enable Object Component Script. See [the scripting guides](/docs/scripting/lua) for each language's setup, including Luau registration and optional external runtimes. ## Rename, move, copy, cut and delete -Hovering over a row does not start a move. Press and hold the primary mouse button on the item name, then drag to another project folder or the root. A folder's arrow expands or collapses it; dragging its name moves only that folder, and dragging a child moves the child. +Click an Explorer file or folder name once to highlight it. Double-click the name to edit it inline. Press **Enter** or click elsewhere to save; **Escape** cancels. Use a single filename, including its extension. Empty names, path separators and existing names are rejected; Console explains the failure. Scene-tab selection and rename controls keep their existing behavior. -Click a file or folder name once to edit it inline. The field appears after the short double-click window so double-click can still open a file. Press **Enter** or click elsewhere to save; **Escape** cancels. Use a single filename, including its extension. Empty names, path separators and existing names are rejected; Console explains the failure. +**Shift-click** adds files or folders to the selection. Holding Shift and the primary mouse button while moving over names also adds those items. **Ctrl-click** highlights the visible range between the last highlighted item and the new item, including both ends. The range follows the tree's displayed order and skips collapsed/filtered entries. Ctrl+Shift adds that range to the existing selection. -Right-click an item, or use a two-finger trackpad click, for **Copy**, **Cut**, **Paste** and **Delete**. Copy/Cut stores an item in the editor clipboard; Paste on a folder uses that folder, and Paste on a file uses its containing folder. Right-click empty tree space for **Paste at Project Root**. Copies get a numbered name when needed. Cut leaves the source in place until a successful Paste. Delete moves the entry into `.rustic/trash//`; recover it with your operating system's file manager. Scene Undo does not undo filesystem actions. +Hovering does not start a move. To drag, the item must already be highlighted before you press and hold on its name. Pressing and holding on an unhighlighted item highlights it; that press cannot start a drag. Release, then press and drag the highlighted name. Dragging a highlighted item moves the highlighted group to the destination folder or project root. Shift/Ctrl selection gestures do not start drags. A folder's arrow expands or collapses it. A selected folder and its selected descendants are moved/copied as one subtree. + +Press **Ctrl+C** to copy highlighted items. Highlight a destination folder and press **Ctrl+V** to paste. If several folders are highlighted, each receives a copy of every copied item. This includes nested selected destinations. Without a selected folder, Paste uses the last selected file's containing folder, or the project root when the selection is empty. The editor also accepts Command+C/V on macOS. Shortcuts apply while Explorer has focus; a focused rename/filter text field uses normal text copy/paste. Copies remain in the clipboard for repeated Paste and get numbered names on collisions. + +Right-click an item, or use a two-finger trackpad click, for **Copy**, **Cut**, **Paste**, **Delete**, and file **Open**. Copy/Cut/Delete uses the highlighted group when the clicked item is highlighted; otherwise the clicked item becomes the selection. Menu Paste on a folder uses that folder, and Paste on a file uses its containing folder. Right-click empty tree space for **Paste at Project Root**. Cut leaves sources in place until a successful Paste and accepts a single destination folder; use Copy for multiple destinations. A batch reports individual failures in Console and refreshes completed operations. Delete moves entries into `.rustic/trash//`; recover them with your operating system's file manager. Scene Undo does not undo filesystem actions. + +Select one model or script at a time for viewport drops; grouped drags organize files within Explorer. These controls require a writable project and stopped Play. Moves and renames keep a file's `.rmeta` sidecar alongside it. Copies omit `.rmeta` so a new asset identity can be assigned on import or script registration. **Manifest paths, scene references and companion-file links are not rewritten.** Update affected references before Play; copied scripts must be registered using the script scope commands. A folder copy does not rewrite references within its files. Operations reject traversal, symbolic links, missing destinations, move collisions and moving/copying a folder into itself. From 532926e23a4a858eb7d8a108418713fed1359b8e Mon Sep 17 00:00:00 2001 From: Jamie Wells Date: Mon, 12 Oct 2026 21:05:28 +0000 Subject: [PATCH 2/2] Document Explorer selection gestures and multi-folder paste --- content/editor/explorer.md | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/content/editor/explorer.md b/content/editor/explorer.md index abefcc3..a674f5d 100644 --- a/content/editor/explorer.md +++ b/content/editor/explorer.md @@ -6,22 +6,28 @@ Prerequisites: a writable project and an existing asset file. Stop Play before r 1. Copy the model and its companion files into the project with your operating system's file manager. Keep glTF buffers/textures and OBJ dependencies in their required relative locations. 2. Find the model in Explorer. The viewport accepts `.obj`, `.gltf`, `.glb` and `.fbx` model drops. -3. Drag the file into the authoring viewport. The editor imports it, creates/reads its `.rmeta` sidecar and uses its Asset ID for scene instances. +3. Click the file once to highlight it, then press and hold on its highlighted name and drag it into the authoring viewport. The editor imports it, creates/reads its `.rmeta` sidecar and uses its Asset ID for scene instances. 4. Inspect the created object, save the scene and check Console for import errors. Expected result: an imported model appears as a scene object. A recognised extension alone does not guarantee that every file variant is supported. Keep the original source and metadata together; regenerating metadata may change identity. ## Files and scripts -The project separates assets, scenes, scripts, `ui/` Web assets, and configuration. **Programming → Object Component Script** creates and registers a script for the selected object; global and scene startup scopes also exist. Existing registered scripts can be attached through **Programming → Attach Existing Script** or Inspector. Double-clicking a script opens the external editor. Right-click (or two-finger click on a trackpad) offers **Set As → Global Startup Script**, **Scene Startup Script**, or **Object Component Script**. Select the target scene object first to enable Object Component Script. See [the scripting guides](/docs/scripting/lua) for each language's setup, including Luau registration and optional external runtimes. +The project separates assets, scenes, scripts, `ui/` Web assets, and configuration. **Programming → Object Component Script** creates and registers a script for the selected object; global and scene startup scopes also exist. Existing registered scripts can be attached through **Programming → Attach Existing Script** or Inspector. Right-click a script and choose **Open** to launch the external editor. Right-click (or two-finger click on a trackpad) offers **Set As → Global Startup Script**, **Scene Startup Script**, or **Object Component Script**. Select the target scene object first to enable Object Component Script. See [the scripting guides](/docs/scripting/lua) for each language's setup, including Luau registration and optional external runtimes. ## Rename, move, copy, cut and delete -Hovering over a row does not start a move. Press and hold the primary mouse button on the item name, then drag to another project folder or the root. A folder's arrow expands or collapses it; dragging its name moves only that folder, and dragging a child moves the child. +Click an Explorer file or folder name once to highlight it. Double-click the name to edit it inline. Press **Enter** or click elsewhere to save; **Escape** cancels. Use a single filename, including its extension. Empty names, path separators and existing names are rejected; Console explains the failure. Scene-tab selection and rename controls keep their existing behavior. -Click a file or folder name once to edit it inline. The field appears after the short double-click window so double-click can still open a file. Press **Enter** or click elsewhere to save; **Escape** cancels. Use a single filename, including its extension. Empty names, path separators and existing names are rejected; Console explains the failure. +**Shift-click** adds files or folders to the selection. Holding Shift and the primary mouse button while moving over names also adds those items. **Ctrl-click** highlights the visible range between the last highlighted item and the new item, including both ends. The range follows the tree's displayed order and skips collapsed/filtered entries. Ctrl+Shift adds that range to the existing selection. -Right-click an item, or use a two-finger trackpad click, for **Copy**, **Cut**, **Paste** and **Delete**. Copy/Cut stores an item in the editor clipboard; Paste on a folder uses that folder, and Paste on a file uses its containing folder. Right-click empty tree space for **Paste at Project Root**. Copies get a numbered name when needed. Cut leaves the source in place until a successful Paste. Delete moves the entry into `.rustic/trash//`; recover it with your operating system's file manager. The engine-owned `.rustic` directory is hidden from Explorer, including generated files and recovery trash. Scene Undo does not undo filesystem actions. +Hovering does not start a move. To drag, the item must already be highlighted before you press and hold on its name. Pressing and holding on an unhighlighted item highlights it; that press cannot start a drag. Release, then press and drag the highlighted name. Dragging a highlighted item moves the highlighted group to the destination folder or project root. Shift/Ctrl selection gestures do not start drags. A folder's arrow expands or collapses it. A selected folder and its selected descendants are moved/copied as one subtree. + +Press **Ctrl+C** to copy highlighted items. Highlight a destination folder and press **Ctrl+V** to paste. If several folders are highlighted, each receives a copy of every copied item. This includes nested selected destinations. Without a selected folder, Paste uses the last selected file's containing folder, or the project root when the selection is empty. The editor also accepts Command+C/V on macOS. Shortcuts apply while Explorer has focus; a focused rename/filter text field uses normal text copy/paste. Copies remain in the clipboard for repeated Paste and get numbered names on collisions. + +Right-click an item, or use a two-finger trackpad click, for **Copy**, **Cut**, **Paste**, **Delete**, and file **Open**. Copy/Cut/Delete uses the highlighted group when the clicked item is highlighted; otherwise the clicked item becomes the selection. Menu Paste on a folder uses that folder, and Paste on a file uses its containing folder. Right-click empty tree space for **Paste at Project Root**. Cut leaves sources in place until a successful Paste and accepts a single destination folder; use Copy for multiple destinations. A batch reports individual failures in Console and refreshes completed operations. Delete moves entries into `.rustic/trash//`; recover them with your operating system's file manager. The engine-owned `.rustic` directory is hidden from Explorer, including generated files and recovery trash. Scene Undo does not undo filesystem actions. + +Select one model or script at a time for viewport drops; grouped drags organize files within Explorer. These controls require a writable project and stopped Play. Moves and renames keep a file's `.rmeta` sidecar alongside it. Copies omit `.rmeta` so a new asset identity can be assigned on import or script registration. **Manifest paths, scene references and companion-file links are not rewritten.** Update affected references before Play; copied scripts must be registered using the script scope commands. A folder copy does not rewrite references within its files. Operations reject traversal, symbolic links, missing destinations, move collisions and moving/copying a folder into itself. A dangling destination symlink or an existing destination `.rmeta` also blocks a move or rename, even when the source has no metadata; inspect the destination with your file manager and resolve the conflict before retrying. Do not reuse orphaned metadata for an unrelated asset.