Since the previous iteration of Brushtool was clunky and prone to breaking, I felt that a rewrite was necessary. Here’s a totally-not-rehearsed demo:
Changes from the previous version
More placement settings. Two new settings were added: Scale and Wobble. Scale resizes the object your brushing with (duh) and Wobble rotates the model in the x- and z-axis.
Two new modes: Stamp and Erase. Stamp lets you to place models one by one. Erase is pretty self-explanatory.
Ignore water and ignore transparent. If working near bodies of water was a huge pain with the previous iteration of the plugin, then fear no more.
Per-object settings. You can set the placement settings of each object individually instead of having them share the same settings.
Dark theme support. Also the UI is like 1000x better.
Team create support. The previous version of the plugin broke very badly when multiple users were using the plugin in team create. Now, each team member can have their own settings. No more stepping on each other’s toes!
Removed the ignore list function. It’s a con, but it’s worth mentioning. Keeping track of the ignore list through sessions is hard and was a huge source of bugs and clunkyness in the previous version, so I removed it. I might add this back, but without the ability to save it across sessions. Maybe.
Get it here (if you have an old version of it, then update the plugin!):
I used Roact and Rodux to write the plugin. I also stole borrowed some code/libraries from the built-in toolbox plugin.
Not anymore. I should have mentioned that. It uses the model’s bounding box as the center by default. If the model has a primary part, then you can set it to use that instead:
Weird. Can you try again, but this time can you make sure that you have nothing selected before stating the plugin?
EDIT: I found the cuprit. Since workspace technically inherits from model, my plugin tries to make a thumbnail for it but cant. Whoops. Selecting workspace triggers the bug. Very bad, must be a change I made recently
What about a feature to install brushes through plugins? Rather than through a part? The latter can still be an option, but for permanent brushes, I think having separate brushes that other developers could publish and upload. My plugin, Redshift Arena SDK has this feature. Would definitely be something I’d look into!
I’ll explain how my plugin does it.
My plugin creates a new folder under Coregui called “Redshift_Arena_SDK_Third_Party_Assets.” This is where all “installed” assets will go. For each asset pack to be compatible with my SDK, they’ll need a loader script that has this code:
local SDKTPA = game.CoreGui:WaitForChild("Redshift_Arena_SDK_Third_Party_Assets")
local asset = script.Asset:Clone()
asset.Parent = SDKTPA
Then in Redshift Arena SDK, it’ll scan for items within the folder that the asset created. It’ll categorize them based on if they’re a part, model, decal, etc, and put them in a GUI within the SDK, where players can insert them.
This could be something to be done with your brush plugin since you already have two default assets that developers have by default.
Users can just bundle assets as a free model if they’re so inclined.
I don’t see a whole lot of people using this feature since it requires knowing how to create and publish a plugin and knowing how to script it such that it injects assets into a certain folder.
There’s some implementation details that would make this difficult.
This could still be done without the use of plugins, but I prefer doing it through plugins since the developer themselves don’t really need to do anything other than install something.
This plugin is great! It makes it easy to build my tree for a scene I’m making.
(Ignore the mouse offset, my recorder wack)
There are however many features I wish were added but of all of them, I wish there was an import/export button
Me and a friend were using Team Create to build some trees and the brush objects were cleared (which was expected). Of course I could always send him the original brush objects but then there are also some brush settings that need to be transferred.
Use case: Map already has trees or objects placed on it but still needs grass. This currently would place grass on the sides of a trees bounding box rather than going through it. I’m assuming that’s what the ignore feature did before you removed it, but I feel like this would be a cheap fix in most scenarios.
Awesome plugin, solid design. Thanks for your contribution to developers