I was reading @PeZsmistic’s feature request for a Preset Manager to be added to Studio, and I decided to make that into a plugin while we wait for that feature to (maybe?) get made.
This plugin ended up being a bit over 2,800 lines of code, and took me quite a while to make. It was a really fun challenge!
Special thanks to @Elttob for letting me use the wonderful Vanilla icons for this plugin!
Special thanks to @CloneTrooper1019 for his wonderful API Dump!
Special thanks to @1waffle1 for their LZW text compression I used to store the serialized Presets more efficiently!
What is this plugin’s purpose?
Honestly, I don’t think I can explain it better than PeZsmistic did in the feature request, so I’ll quote that here.
Some example use cases, explained by PeZsmistic in their request:
What can it do?
Well, for this initial MVP release I did the majority of what PeZ requested:
- The ability to create “Presets”. (A Preset is a collection of properties, attributes, tags, and a collision group)
- The ability to apply Presets to instances in the selection.
- Presets can be applied to any instance type. Property names that are not valid are simply ignored.
- These presets could be applied additively or as a complete overwrite to an instance.
- If I “add” a preset to an instance, only properties defined in the preset will be changed, missing tags and attributes will be added, and the collision group will be changed
- If I “set” a preset on an instance, all properties will be reset to default, all tags and attributes will be deleted, and the Preset will then be added as above.
- The ability to name Presets.
- The ability to quickly find a preset by searching by name.
- The ability to duplicate Presets for quicker variant creation.
- Autofill suggestions for Properties and Collision Group.
- Automatic datatypes for Properties from API Dump.
- Settable datatypes for Attributes.
- The presets are serialized and saved, so your Presets do persist between sessions.
- Preset summary when the GUI is collapsed.
- Export Preset as standalone module for runtime preset application.
- Select all Instances that match the Preset.
(More features are planned, just not needed for this initial release.)
Here’s a quick demonstration of some of the features in use.
- Folders and Sorting
- Recently Used Tab
- Create Preset from Selection
- Supporting more property types (eg: CFrame, Axes, PhysicalProperties, Instance)