Expected Behavior:
The events should fire when I toggle the settings in the ribbonbar, and “Hi” should be printed.
Actual Behavior:
The events do not fire and “Hi” is not printed.
I am trying to make additional visualizers for constraints in my Studio Tweaks plugin turn on or off, or change occlusion mode when you use these settings.
Workaround:
The only workaround is to poll these values and manually fire your own event, which is disgusting.
I want my plugin to be seamless with Studio and this issue makes that impossible without doing something disgusting and inefficient.
The StudioService properties DraggerSolveConstraints, GridSize, RotateIncrement, and UseLocalSpace also have the same of not firing GetPropertyChangedSignal signals. Plugin.GridSize and Plugin.CollisionEnabled also have the same problem of not firing GetPropertyChanged signals.
But yes, it’s not great that these don’t have a changed event. Thanks to the way things are structured internally, it’s actually extremely challenging to introduce a changed event for them, which is why we haven’t already. We still do want to do it eventually but unfortunately this won’t be fixed any time soon.
If you’re curious, basically what it boils down to is that a bunch of public Lua APIs are affected by some of those properties, and thus the source of truth for the property value exists in the core engine code, not in the Roblox Studio code.
However, the StudioService gets the values for these that the Studio interface is currently seeing. That means that if we just naively piped the changed events between Studio and the core engine, the Changed event would end up slightly “out of sync” with the change in the actual property value. Bringing everything back into sync without potentially breaking existing code is a bigger task than we think is worth prioritizing when a reasonable workaround exists.