Scriptable popout windows

Right now, the only ways plugins can interact with a user is through the CoreGui and keyboard/mouse input. There are numerous cases where neither of these are optimal. Allowing us to create scriptable, popout (like the explorer, output, toolbox, etc) windows would enable the creation of the following concepts:

By static object I mean an object not affected by physics – in the case of ROBLOX, that means anchored. In every game I can think of there are static objects that are animated. In pretty much every game you have the animated doors/flags/grass, in Skyrim there are the animated static catapults at the Whiterun siege, in Mass Effect The power hatches that open when you shoot them, In Warframe the static containers that move along the conveyer belts in Grineer Spy 2.0 missions, in Shadow of the Colossus you have destructible environments (not affected by physics debris just turn noncollidable and fall through the ground), etc. Animating static objects is such a present thing in other games, and the games benefit from that aesthetic appeal. How do we accomplish that on ROBLOX though?

I was thinking of making a plugin similar to the ROBLOX animator / 3DS Max animator but more geared to anchored objects (i.e. not dependent on joints). How would I open up the animator though? I don’t want a GUI to pop up every time I select a model, I don’t want to memorize a keyboard combination to press in order to open it, and I don’t want to add yet another plugin button to my studio setup. What would be bearable though is to have a window pinned to the side of the screen that I could focus whenever I wanted to animate a model. Pretend “Script Performance” was named “Static Animator” and was grouped with the properties pane instead of the toolbox/output

When you’re making a GUI, attempting to edit it with another GUI is pretty much out of the question because how are you going to edit your GUI when it’s covered and you can’t see it? Take this for instance, I have pinned a script editor to the properties pane group and I can read those entries from a plugin and update the selected GUI object accordingly. The properties in the script don’t even need to be real properties – they just need to be something the plugin knows about and then it can adjust the GUI to what I intended it to be. I haven’t been using this though because I can’t see any of the other tabs in the window group (you’ll notice that properties is cut off) and I would have to create a script each time I wanted to modify a GUI object, unpin it from the main window, and then drag it to that location. It would be much easier if I just had a window that came into focus over the properties window whenever I selected a GUI object.

The staff can’t obviously realistically keep up with every nitpick demand to change studio. If there were scriptable windows though, we wouldn’t have to ask. I could add a filter to the explorer, I could automatically filter unnecessary http warnings from the output, and I could clean up the Advanced Objects window if I wished.

How do you enable the average, non-scripter users to configure models? You put an ugly configuration object with even uglier value objects inside into the model! This is terrible. However, What if I made a plugin which pinned a “Configure” tab to the properties area? It could read through these configure objects and provide a clean interface for configuring models. I could even ditch the configure object completely and just use a “settings” module, but with the custom window I would have no need to worry about people being unable to open scripts.

Crazyman’s Datastore Editor is awesome, but it’s a waste of a button imo. It would fit much better as a tab in my Game Explorer / Explorer area that I could switch to whenever I wanted to look at / edit the DataStore.

This would be really helpful to have and would enable plugin developers to create even cleaner interfaces.

2 Likes

Plugins need a lot more work doing on them and I believe this is a key feature that will make me use and create more. I’ve always wanted to redesign the object insertion window so that it’s ordered with the instances I use most frequently or perhaps it splits it into key instances such as scripts and primitives followed by everything else.

I’d also like the ability to run certain scripts regardless of their privilege level. If I created a custom properties window and I wanted to enable http requests then I’d need a method of running that change without my plugin throwing an error. Perhaps a method for plugins where you include a message and a function, the message would be displayed followed by the permissions the function is requesting and the user will be prompted to allow it to run. It would return true or false if it was successful.

Finally I’d also like to make money from plugins. It irritates me a little bit that I will spend ages working on a plugin that’s really useful but never see anything come back to me for that time.

But I certainly want to see what you’re suggesting.

This would be absolutely amazing.

I think this would be a bit awkward to implement because the normal pop out windows are written in C++.

This would be extremely useful though

[quote] I think this would be a bit awkward to implement because the normal pop out windows are written in C++.

This would be extremely useful though [/quote]

I thought Roblox used Qt for their gui? if so, Qt is like the best gui manager ever, and it shouldn’t be too hard to just wrap a C++ call to make a new menu to a lua function.

I’ve been playing around with this sort of feature in Unity and it’s great.

I’m all for it. I feel this is something that could make plugins feel more like plugins on ROBLOX rather than weird game editing addons restricted to the game-view.