VFX Editor - all your VFX needs, in one

1.0.7

Changes

  • NumberSequence buttons now feature an input box alongside the graph button, to set a constant value.

  • A graph will now adjust itself to the max value in the sequence, if this is higher than the max size setting.

  • Decals are now taken into account with “Import Instances”

GitHub release

Thank you for the resource, it’s gonna make partivles so much easier

Wow! This is amazing, thank you for releasing this!

1.0.8

Changes

  • Fix issue with breadcrumb in texture storage not working correctly with <2 labels
  • Fix Texture path breaking and resulting in a crash
  • Made it so that clicking a texture that is set and found will now open the folder it is in
  • Fix bug where creating a folder would empty the texture storage

GitHub release

I made this module a while ago if you need it for now

local Module = {}

local function EmitFunction(Emitter:ParticleEmitter):ParticleEmitter|nil
	assert(typeof(Emitter) == "Instance" and Emitter:IsA("ParticleEmitter"), "Emitter must be a ParticleEmitter")

	local EmitCount     = Emitter:GetAttribute("EmitCount")
	local EmitDelay     = Emitter:GetAttribute("EmitDelay")
	local EmitDuration  = Emitter:GetAttribute('EmitDuration')
	
	if not EmitCount or EmitCount < 1 then
		EmitCount = 1
	end
	
	task.delay(EmitDelay, function()
		if EmitDuration and EmitDuration > 0 then
			local startTime = os.clock()
			while os.clock() - startTime < EmitDuration do
				Emitter:Emit(EmitCount)
				wait(1/Emitter.Rate)
			end
		else
			Emitter:Emit(EmitCount or Emitter.Rate)
		end
	end)

	return Emitter
end

function Module:EmitParticles(VFXAttachment:Instance):nil
	if VFXAttachment:IsA("ParticleEmitter") then
		EmitFunction(VFXAttachment)
		return
	end
	for _, Emitter in ipairs(VFXAttachment:GetChildren()) do
		if Emitter:IsA('ParticleEmitter') then
			EmitFunction(Emitter)
		else
			Module:EmitParticles(Emitter)
		end
	end
	return nil
end

return Module

it would be nice if you floored the decimals to 2 or 3 characters max, this is kinda annoying imo
image

thank you but I’m mainly looking for better integration with EmitCount/EmitDelay etc with this plugin. I ended up forking this plugin

Hi, are you going to share your forked version ?

Thanks

I wasnt going to, I thought the OP would fix the problem

I’m going to after I’m back from holiday (around 2 weeks)

1 Like

Crashed studio when I tried to add a new texture:

Yup, I’m aware of this issue - it’s on my todo list and I’ll fix it ASAP. For future issues, please report them on GitHub as it’s easier for me to track them!

this is so easy to use, useful and complete it’s just insane! great work dude, please keep updating it! :slightly_smiling_face:

1 Like

Best VFX Plugin on top, thanks for this!

1 Like

EmitDuration only sets the .Enabled property to true for the duration of the Attribute Value
EmitCount should default to 0 if it doesn’t exist/is < 1

Hey there, have thought of making these kinds of plugins for years, but have been too busy. I know a lot of things that can also be improved for this plugin, and would love to see them implemented.

– Add compression to the data.
– Automatically flag characteristics of a ParticleEmitter once imported for easy sorting (flipbook, 2x2, 4x4, 8x8)

In general I think this plugin could benefit a lot performantly from wise implementation of compression, and optimization of how assets are displayed. Great plugin btw.

Hi there, thanks for the suggestions.

What benefit would compression have? All files are saved locally, so size isn’t really a concern. If anything, the performance would get worse due to the overhead from the compression.

Compression can be as simple as rounding all numbers, and as complex as matching strings of information to mean other strings of information in key sequences, and that’s where cpu performance is a drag. Also, I thought i should mention that you need to make all the editors global (an option!), as in, one editor is not solely confined to a particle, another thing is that it does not detect .1 as a valid input (adjusting zoffset)

Also, when I select anything in a dropout box (such as shapestyle) I can’t automatically go to an option by typing the key it begins with, another problem. There are tiny things crucial to the work flow that need to be accounted for.

Also, I am really thankful for the work you put into this.

I’m not sure what you mean by making all the editors global per your explanation; could you give some more information? I’ve noted the ZOffset bug and the QoL change and will have a look whenever I can.

Yeah, so if I am changing something’s size, and switch to another particle the editor stays for that particle only, that’s not good design, roblox did it, but their implementation was completely garbage, don’t follow suit.