{"id":"eoeyy/ember","name":"ember","scope":"eoeyy","platform":"roblox","description":"A fork of ember with react-lua support and bug fixes.","version":"1.0.2","latest":"1.0.2","versions":["1.0.0","1.0.1","1.0.2"],"license":"MIT","licenseRating":"safe","licenseCaveats":["The package archive does not include its license text; the license is declared in its manifest metadata."],"licenseVerified":false,"dependencies":{"jsdotlua/react":{"version":"^17.2.1","alias":"react"},"jsdotlua/react-roblox":{"version":"^17.2.1","alias":"react-roblox"}},"integrity":"d7a77eb457f52af7b9638dc88029814b6c3836627929fec8cfaba8c3f43fcc4d","likes":0,"downloads":0,"install":"forest install eoeyy/ember","url":"https://forest.dev/p/roblox/eoeyy/ember","files":"https://api.forest.dev/ai/package/roblox/eoeyy/ember/files","readme":"# Ember\r\n\r\nA 2D particle system for Roblox GUIs. Makes it easy to add particle effects to your interfaces.\r\n\r\n## What it does\r\n\r\nEmber lets you use Roblox's ParticleEmitter on 2D GUIs instead of just 3D parts. You can emit particles at specific screen positions or randomly within GUI frames.\r\n\r\n## Installation\r\n\r\nAdd to your `wally.toml`:\r\n\r\n```toml\r\n[dependencies]\r\nember = \"eoeyy/ember@1.0.2\"\r\n```\r\n\r\n## Basic Example\r\n\r\n```lua\r\nlocal Ember = require(Packages.ember)\r\n\r\n-- Create a regular ParticleEmitter\r\nlocal emitter = Instance.new(\"ParticleEmitter\")\r\nemitter.Texture = \"rbxasset://textures/particles/sparkles_main.dds\"\r\nemitter.Lifetime = NumberRange.new(1, 3)\r\nemitter.Rate = 50\r\nemitter.Speed = NumberRange.new(3, 5)\r\n\r\n-- Wrap it with Ember\r\nlocal emitter2D = Ember.new(emitter)\r\n\r\n-- Emit particles at specific positions\r\nemitter2D:EmitAtPosition(20, UDim2.fromScale(0.5, 0.5)) -- Center of screen\r\n\r\n-- Emit particles randomly within a frame\r\nemitter2D:EmitInParent(15, myFrame)\r\n\r\n-- Auto emit (continuous)\r\nemitter.Enabled = true\r\n\r\n-- Clear all particles\r\nemitter2D:Clear()\r\n```\r\n\r\n## Size Modes\r\n\r\nEmber supports different particle sizing modes:\r\n\r\n- **ScreenScale**: Size relative to screen dimensions (default)\r\n- **ParentScale**: Size relative to parent container\r\n- **Pixels**: Direct pixel size\r\n- **Rem**: Responsive rem-based sizing\r\n\r\n```lua\r\nemitter2D.SizeMode = \"ParentScale\"\r\n```\r\n\r\n## React Support\r\n\r\nIf you're using React Lua, Ember has built-in hooks with automatic parenting:\r\n\r\n```lua\r\nlocal EmberReact = require(Ember.React)\r\n\r\nlocal function MyComponent()\r\n    local frameRef = React.useRef()\r\n    local emitter = React.useMemo(function()\r\n        local e = Instance.new(\"ParticleEmitter\")\r\n        e.Texture = \"rbxasset://textures/particles/sparkles_main.dds\"\r\n        e.Speed = NumberRange.new(3, 5)\r\n        return e\r\n    end, {})\r\n    \r\n    -- Particles automatically parent to frameRef\r\n    local controls = EmberReact.useParticles(emitter, {\r\n        parentRef = frameRef,\r\n        sizeMode = \"ParentScale\"\r\n    })\r\n    \r\n    return React.createElement(\"Frame\", {\r\n        ref = frameRef,\r\n    }, {\r\n        Button = React.createElement(\"TextButton\", {\r\n            Text = \"Click for particles!\",\r\n            [React.Event.Activated] = function()\r\n                controls.emitAtPosition(10)\r\n            end,\r\n        })\r\n    })\r\nend\r\n```","readmeTruncated":false}