{"id":"tpc9000/uiparty","name":"uiparty","scope":"tpc9000","platform":"roblox","description":"Mirrored from the Wally registry.","version":"0.2.0","latest":"0.2.0","versions":["0.1.0","0.2.0"],"license":"MIT","licenseRating":"safe","licenseCaveats":[],"licenseVerified":true,"dependencies":{},"integrity":"8f165d7f2ada8f02f0f2193bb62b72f89f534b536cf89fa61fa8c3f3f94da822","likes":0,"downloads":0,"install":"forest install tpc9000/uiparty","url":"https://forest.dev/p/roblox/tpc9000/uiparty","files":"https://api.forest.dev/ai/package/roblox/tpc9000/uiparty/files","readme":"# UIParty\r\n\r\nA particle emitter system for Roblox UIs.\r\n\r\n## Examples\r\n\r\nBaseline demonstration of the library's capabilities:\r\n\r\n```lua\r\nlocal UIParty = require(...:WaitForChild(\"UIParty\"))\r\n    local CreateParticleEmitter = UIParty.CreateParticleEmitter\r\n    local Paths = UIParty.Paths\r\n\r\nlocal RandomGen = Random.new()\r\nlocal Colors = {\r\n    Paths.Sequence({\r\n        {Time = 0, Value = Color3.fromRGB(251, 206, 100)};\r\n        {Time = 0.5, Value = Color3.fromRGB(251, 206, 100)};\r\n        {Time = 1, Value = Color3.fromRGB(255, 255, 255)};\r\n    }),\r\n    Paths.Sequence({\r\n        {Time = 0, Value = Color3.fromRGB(61, 131, 235)};\r\n        {Time = 0.5, Value = Color3.fromRGB(61, 131, 235)};\r\n        {Time = 1, Value = Color3.fromRGB(255, 255, 255)};\r\n    }),\r\n    Paths.Sequence({\r\n        {Time = 0, Value = Color3.fromRGB(235, 139, 61)};\r\n        {Time = 0.5, Value = Color3.fromRGB(235, 139, 61)};\r\n        {Time = 1, Value = Color3.fromRGB(255, 255, 255)};\r\n    })\r\n}\r\n\r\nlocal Emitter = CreateParticleEmitter({\r\n    TimeScale = 2;\r\n    EmitFrom = game.StarterGui.ScreenGui.Frame;\r\n    Rate = 60;\r\n\r\n    ParticleDefinition = function()\r\n        local Angle = RandomGen:NextNumber(0, math.pi * 2)\r\n        local Direction = Vector2.new(math.sin(Angle), math.cos(Angle))\r\n\r\n        return {\r\n            Lifetime = 0.75;\r\n            Texture = {\r\n                ID = \"rbxassetid://13367535759\";\r\n\r\n                SpriteSheet = {\r\n                    RandomStart = false;\r\n                    Duration = 0.75;\r\n                    Cells = Vector2.new(4, 4);\r\n                    Size = Vector2.new(1024, 1024);\r\n                };\r\n            };\r\n            Transparency = Paths.Sequence({\r\n                {Time = 0, Value = 1};\r\n                {Time = 0.1, Value = 0};\r\n                {Time = 0.9, Value = 0};\r\n                {Time = 1, Value = 1};\r\n            });\r\n            Position = Paths.Physics(Vector2.new(0.5, 0.5) + Direction * 0.2, Direction * 0.3, Vector2.zero);\r\n            Rotation = Paths.Value(-math.deg(Angle));\r\n            Color = Colors[RandomGen:NextInteger(1, #Colors)];\r\n            Size = Paths.Sequence({\r\n                {Time = 0, Value = Vector2.new(0.4, 0.4)};\r\n                {Time = 1, Value = Vector2.new(0.2, 0.2)};\r\n            });\r\n        };\r\n    end\r\n})\r\n\r\ntask.delay(10, Emitter.Destroy)\r\n```\r\n\r\n## Todo\r\n\r\n### Important\r\n\r\n- [ ] Function documentation\r\n- [ ] Examples folder\r\n\r\n### Short Term\r\n\r\n- [ ] Preset emission shapes (Radial, Rectangular, ...)\r\n- [ ] Framerate-based emission downscaling\r\n- [ ] Multithreaded update support\r\n\r\n### Long Term\r\n\r\n- [ ] Particle editor plugin\r\n- [ ] Other particle types (e.g. Text, Lightning, Water, Polygonal)\r\n- [ ] Density combination\r\n","readmeTruncated":false}