{"id":"teakzc/crunchwrap","name":"crunchwrap","scope":"teakzc","platform":"roblox","description":"Mirrored from the Wally registry.","version":"0.1.12","latest":"0.1.12","versions":["0.1.1","0.1.2","0.1.5","0.1.6","0.1.7","0.1.8","0.1.9","0.1.10","0.1.11","0.1.12"],"license":"MIT","licenseRating":"safe","licenseCaveats":["License identified from the packaged LICENSE file; the manifest declared none."],"licenseVerified":true,"dependencies":{"ffrostfall/crunchyroll":{"version":"^0.2.0","alias":"crunchyroll"}},"integrity":"a5bf64af8c982928460c6337564ab3ba25a8e08a675385e244429a7576b56d54","likes":0,"downloads":0,"install":"forest install teakzc/crunchwrap","url":"https://forest.dev/p/roblox/teakzc/crunchwrap","files":"https://api.forest.dev/ai/package/roblox/teakzc/crunchwrap/files","readme":"<div align=\"center\">\n  <!-- <img src=\"https://raw.githubusercontent.com/teakzc/crunchwrap/refs/heads/main/logo.svg\" alt=\"Logo\" width=\"256\" height=\"256\"/> -->\n\n  <h1 align=\"center\"><b>crunchwrap</b></h1>\n  <p align=\"center\"></p>\n  \n  Powerful ffrostfall/crunchyroll wrapper with many features\n\n[![License](https://img.shields.io/github/license/teakzc/crunchwrap?style=for-the-badge)](https://github.com/teakzc/crunchwrap/blob/main/LICENSE)\n[![Documentation](https://img.shields.io/badge/Documentation-Website-blue?style=for-the-badge)](https://teakzc.github.io/crunchwrap/)\n\n</div>\n\n# crunchwrap\n\n## 📦 Installation\n\n[npm](https://npmjs.com/):\n\n```zsh\nnpm install @rbxts/crunchwrap\n```\n\n[pesde](https://pesde.dev/):\n\n```zsh\npesde add teakzc/crunchwrap\n```\n\n[wally](https://wally.run/):\n\n```toml\n[dependencies]\ncrunchwrap = \"teakzc/crunchwrap@VERSION\"\n```\n\n## ⭐ Features\n\n- Strictly typed API\n- Force animation to have a fixed playback length\n- Speed control and animation pausing and also looping\n- Reverse time in animations\n- Smooth fade in/out system with easing curves\n- Provide your own easing curves to be used\n- Motor6D support\n- Selective rig solving\n\n# Documentation\n\nDocumentation will only contain key information as for now.\nIt will be hosted on a website soon, stay tuned. All functions are documented.\n\n## Fade\n\n### IMPORTANT!\n\nWhen using fades make sure you have a IDLE track in the background. Why?\n\nBecause fades utilize weights, and they only work if you have another track playing.\n\nWhen configuring `fade` times do not set either fadein or fadeout to zero, as this does nothing.\n\n`fade` time is not measured in `seconds` but in a value ranging from 0 to 1; from the start of the animation to the end. This allows for easy fade configuration without calculation.\n\nFor `fadeout` values, they are calculated to perfectly fadeout until the animation ends by looking at the remaining alpha of the track and the alpha of the fadeout time. It will wait until fadeout alpha is bigger than track alpha to begin fading out.\n\nDo not worry about fade in and fade out overlapping as it is supported and will be smooth!\n\nFor crunchwrap, you can provide a custom easing curve via `fadecurve` as seen below. If none are specified they will default to this.\n\nhttps://www.desmos.com/calculator/zlussqyagp\n\n```luau\ncrunchwrap.add_animation(keyframe, rig, {\n    alpha = 1,\n    weight = 1,\n    priority = 1,\n    fadein = 0.25, -- Ends at 0.25 alpha\n    fadeout = 0.5, -- Starts at 0.5 alpha\n    fadecurve = {\n        fadeout = function(alpha: number) -- Custom easing curve for fade out\n            return alpha ^ 3\n        end\n    }\n})\n```\n\n## Removing Animations\n\nThe function `remove_animation` will stop the animation with a smooth fade out time. If you want to stop it instantly consider using `force_remove_animation` instead.\n","readmeTruncated":false}