Comprehensive Spec For Script Editor Button States

In studio, while a script editor tab is focused, the majority of editing features are disabled. I often find myself switching between the viewport and the script editor just to enable buttons. This is a slow and frustrating experience, and it has been going on for years. I have finally reached the point where I am willing to write out a comprehensive spec of what buttons should be in what state. Please fix this.

Home > Clipboard

image
Purpose: Graphical interface for clipboard operations targeting the instance hierarchy
State while editing scripts: Enabled
Reason: Editing the game hierarchy is a common operation that is often performed while writing code. There is no risk of confusion because this panel is located in the Home category, which operates on Roblox instances. A different clipboard panel exists in the Script Menu category for text operations.

Home > Tools, Model > Tools, Model > Snap to Grid, Model > Pivot, Model > Alignment

imageimageimage
Purpose: Various operations and mode selectors involving 3D handles.
State while editing scripts: Reset Pivot: Enabled, Others: Disabled
Reason: The user interacts with these tools through the viewport. Mode switches and configurations are not available while editing scripts. Reset Pivot is the exception, because it is an instant operation that operates on the selection. Since selection is available while editing scripts, Reset Pivot should be available.

Home > Terrain

image
Purpose: Toggles the terrain plugin
State while editing scripts: Enabled
Reason: This button opens a sub-menu and sub-menus are always available. The actions within this sub-menu should be evaluated individually, as many of them are inappropriate for use within the script editor.

Home > Insert, Model > Parts

image image
Purpose: Quick access to several instance creation sub-menus.
State while editing scripts: Enabled
Reason: Toolbox opens a sub-menu and sub-menus are always available. Part allows the user to insert a primitive into the current selection. While Part does have an additional behavior involving the camera location, that behavior isn’t central to the operation and its availability shouldn’t be a blocking factor. UI opens a tool category that has no viewport-specific functionality, so it should not be blocked either.

Home > Edit, Model > Parts

image image
Purpose: Quick access to common part edit operations
State while editing scripts: Enabled
Reason: None of these buttons have any behavior that’s associated with the viewport. They all operate on the user’s current selection. The user can use selection in the script editor, so selection-based operations should be available.

Home > Test, Home > Team Test, Test > Simulation, Test > Clients and Servers

image image image
Purpose: Launches the simulation in a variety of modes
State while editing scripts: Enabled
Reason: None of these buttons have any behavior that’s associated with the viewport.

Home > Game Settings

image
Purpose: Toggles a sub-menu where the user can edit settings for the game
State while editing scripts: Enabled
Reason: Sub-menus are always available.

Model > Solid Modeling

image
Purpose: Quick access to CSG operations
State while editing scripts: Enabled
Reason: These operations act on the user’s selection. Selection is available during script editing, so these operations should be available during script editing.

Model > Constraints

image
Purpose: A quick insert menu and debug displays
State while editing scripts: Create: Enabled, Others: Disabled
Reason: Create spawns objects in the user’s selection. This operation doesn’t require the viewport, so the viewport’s state should not impact its availability. The debug items require the viewport to view their effects, so the user should not be allowed to interact with them while the viewport is not available.

Model > Gameplay

image
Purpose: Quick insert menus for particle effects and spawn locations
State while editing scripts: Enabled
Reason: These buttons spawn objects in the user’s selection. The viewport is not a necessary component to their functionality. The Spawn button does integrate the camera location as part of its function, but it isn’t required for its operation so the viewport’s availability shouldn’t block the operation.

Model > Advanced

image
Purpose: Miscellaneous operations and sub-menus that don’t fit into other Model subcategories.
State while editing scripts: Enabled
Reason: None of these operations require or even integrate the viewport into their functionality. They should all be available while editing scripts.

Test > Emulation

image
Purpose: Access point for sub-menus that configure emulation options
State while editing scripts: Enabled
Reason: Both of these buttons open sub-menus, and sub-menus are always available. Neither of these menus integrate the viewport into their behavior. Furthermore, both of these menus are used for configuring the simulation. The simulation operations are available while editing scripts, so if these menus are not available then there’s a functionality gap in the user’s workflow.

Test > Audio

image
Purpose: Mutes the window, used for simulation windows to prevent noise interference
State while editing scripts: Enabled
Reason: The simulation can run, and therefore generate audio, while the user is editing scripts. The user should have access to this feature any time audio can be played.

View > Show


Purpose: Comprehensive access point for most sub-menus
State while editing scripts: Enabled
Reason: Sub-menus are always available. If any features within these sub-menus should be disabled, that should happen on a per-button basis within the sub-menu.

View > Actions

image
Purpose: View-related operations and settings
State while editing scripts: Full Screen: Enabled, Others: Disabled
Reason: Full Screen is an app-level view feature. Since script editing happens within the app, full screen should be available. View Selector, Screen Shot, and Video Record are all viewport-level features which isn’t available without the viewport.

View > Settings

image
Purpose: View-related configurations
State while editing scripts: Switch Windows: Enabled, Others: Disabled
Reason: Switch Windows is used to switch from the viewport to script editing and vice versa. It should be available in both of those modes. The other interactions in this category are special views for the viewport, and should only be available while the viewport is in use.

View > Stats

image
Purpose: Display legacy stat menus
State while editing scripts: Disabled
Reason: Functionally, these stats should be available while editing scripts. However, the legacy menus that these buttons represent are rendered through the viewport. Because they aren’t available without the viewport, they should be disabled.

Plugins > Tools

image
Purpose: Access to plugin management sub-menus
State while editing scripts: Enabled
Reason: Sub-menus are always available.

Plugins > Rig Builder, Plugins > Localization, Plugins > Avatar, Plugins > Animations

image
Purpose: Access to several built-in plugins
State while editing scripts: Enabled
Reason: All of these buttons open sub-menus. Sub-menus are always available. If these menus contain features that should be disabled during script editing then those features should be disabled on a per-feature basis.

Plugins > …


Purpose: Blank slate for user plugins
State while editing scripts: Variant
Reason: Each plugin should be allowed to configure its own button states.

UI

image
Purpose: Insert menu for common ui objects
State while editing scripts: Enabled
Reason: None of these operations require the viewport to function. They all operate on the user’s selection. Selection is available during script editing, so these buttons are not being blocked by anything.

8 Likes