Currently, I’m working on a new particle system.
Of wich you can find a documentation here (not fully done yet).
Instead of my previous particle system’s, which were pre-programmed to have specific settings.
This new version uses modules that you can add yourself.
The system comes with a plugin to make the process of editing particle system’s easier.
Current stats are about 1000 particles versus 30 fps. Of course, you can change the fps at which the particles are rendered; this allows for more particles.
Made a new effect again on wich i’m pretty proud.
Its a equalizer effect thats colored and offset from the base, based on the playbackloudness of the audio.
As this marks the beta release, some bugs may surface. I encourage you to report any issues you encounter so that I can promptly address and enhance the plugin.
Explore the premade systems conveniently accessible from the dedicated tab. All systems showcased on my YouTube channel are compiled there for easy access.
For detailed guidance, refer to the documentation page available at CoreModular. Rest assured, I am committed to continually improving and expanding the documentation over time.
If you’ve acquired the plugin, I’d greatly appreciate it if you could share your experience. Your feedback is invaluable in making this plugin even better.
Thank you for being a part of this exciting release.
Loving this so far! I’d like to be able to run these particles inside viewportframes. Is there currently an easy workaround for doing this? Currently the particles are all inside workspace in a folder, which wont render inside a viewport frame. Perhaps parenting the particles to the parent part rather than workspace?
Edit: got it working with the following modified Client_Script
local CollectionService = game:GetService("CollectionService")
local ParticleModule = require(game.ReplicatedStorage.ParticleModule)
local PlayerGui = game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui")
task.wait(1)
local function attachBody(v)
local system = ParticleModule.new(v.Parent, v.Value, v:IsDescendantOf(PlayerGui) and v.Parent or nil)
system.origin = v.Parent.CFrame
v.Parent:GetPropertyChangedSignal("Parent"):Connect(function()
system:terminate()
end)
if v:GetAttribute("enabled") ~= false then
v:SetAttribute("enabled", true)
end
system.enabled = v:GetAttribute("enabled")
v:GetAttributeChangedSignal("enabled"):Connect(function()
system.enabled = v:GetAttribute("enabled")
end)
end
for _,v in ipairs(CollectionService:GetTagged("particle_body")) do
attachBody(v)
end
CollectionService:GetInstanceAddedSignal("particle_body"):Connect(function(instance)
attachBody(instance)
end)
okay so the ParticleModule.new expects 2 parameter and a 3rd override.
1: The systems base, can be a basepart or an attachment,
2: A system copy, Wich is one of the folders in your system folder.
3: The particles parent. All particles spawned from this system will be placed in this parent.
So all you have to do is set the 3rd parameter to your viewport and it should work.
I rewrote the client activator a little bit.
This should work. it will check if your system is part of a viewframe and if so set the parent of particles to this viewport
local CollectionService = game:GetService("CollectionService")
local ParticleModule = require(game.ReplicatedStorage.ParticleModule)
task.wait(1)
for _,v in ipairs(CollectionService:GetTagged("particle_body")) do
local viewport = v:FindFirstAncestorOfClass("ViewportFrame")
local particleParent = viewport or nil
local system = ParticleModule.new(v.Parent, v.Value, particleParent)
system.origin = v.Parent.CFrame
v.Parent:GetPropertyChangedSignal("Parent"):Connect(function()
system:terminate()
end)
if v:GetAttribute("enabled") ~= false then
v:SetAttribute("enabled", true)
end
system.enabled = v:GetAttribute("enabled")
v:GetAttributeChangedSignal("enabled"):Connect(function()
system.enabled = v:GetAttribute("enabled")
end)
end
CollectionService:GetInstanceAddedSignal("particle_body"):Connect(function(instance)
local viewport = instance:FindFirstAncestorOfClass ("ViewportFrame")
local particleParent = viewport or nil
local system = ParticleModule.new(instance.Parent, instance.Value, particleParent)
system.origin = instance.Parent.CFrame
instance.Parent:GetPropertyChangedSignal("Parent"):Connect(function()
system:terminate()
end)
if instance:GetAttribute("enabled") ~= false then
instance:SetAttribute("enabled", true)
end
system.enabled = instance:GetAttribute("enabled")
instance:GetAttributeChangedSignal("enabled"):Connect(function()
system.enabled = instance:GetAttribute("enabled")
end)
end)
please let me know if it works well for you so i can add it to the plugin itself.