As a Roblox developer, it is currently too hard to do plugin operations when the selected ribbon tool changes. There is no event for when this happens, so I need to keep track of the current tool and poll for when the tool changes, making needless use of a loop or RunService connection.
In my plugin Studio Tweaks - Disable selection box, disable UI Editor, anchor new parts, show selection faces, and more, I need to listen for when the ribbon tool changes so I can disable or enable the extra features my plugin adds on top of the studio dragger gizmos. Since there is no event for this, I am doing the poll in a RenderStepped callback. The original purpose of this callback was explicitly for this purpose so the plugin would feel responsive.
I would like an event plugin.SelectedRibbonToolChanged
to go along with the function plugin:GetSelectedRibbonTool()
I’m currently using.
This is my current solution involving polling. I would like this to simply be attached to an event so I don’t have to poll.
local function onStep(deltaTime)
if plugin:GetSelectedRibbonTool() ~= lastUsedTool then
initializeGizmos()
end
end
If Roblox is able to address this issue, my plugin could be responsive without wasting time polling constantly, waiting for the current tool to change.