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 Extra Dragger Gizmos - Disable selection box, show selection faces, show selection origin, 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.