[ VirtualButFake ](https://github.com/VirtualButFake) / ** [vfx-editor](https://github.com/VirtualButFake/vfx-editor) ** Public

  * [ Notifications ](https://github.com/login?return_to=%2FVirtualButFake%2Fvfx-editor) You must be signed in to change notification settings
  * [ Fork 1 ](https://github.com/login?return_to=%2FVirtualButFake%2Fvfx-editor)
  * [ Star  21 ](https://github.com/login?return_to=%2FVirtualButFake%2Fvfx-editor)

# Home

Jump to bottom

Tijn Epema edited this page Aug 4, 2024 · [12 revisions](https://github.com/VirtualButFake/vfx-editor/wiki/Home/_history)

# Introduction

Welcome to the VFX Editor User Guide. The plugin is relatively straightforward, but features some powerful tools that aren't obvious at first glance. This guide will help you get the most out of the plugin.

Each tool and feature in the plugin will be shortly explained, per interface.

## Main Interface

By default, the default interface features a topbar that contains a list of the current items, a button to add the currently selected item in the Explorer, a button to open the Texture Storage and a button to open the settings.

Below that, a search bar is available. This allows you to search either on instnace names or on their properties.

The instance view is visible below the search bar. This view shows, by default, a tree view with all of the descendants of your selected instance. All properties will be visible in the properties view, sorted by category, which are all collapsible, just like the sub-instances.

Right clicking on an instance will open up a context menu, featuring a button to delete the instance, create a new tab for it, select it in the explorer and a button to to collapse it's descendants and properties. On "container" elements, which are Parts, Models and Attachments, there is an additional Insert Object button.

Holding the control key while clicking a property will select it. Selecting another property while holding control will add it to the selection, **if the types match**. A type is determined based on the following rules:

  * Are the properties of a similiar (primitive) type? (e.g. number, string, boolean, Color3, NumberSequence, etc.)
  * Do the properties serve a similiar purpose, and function by the same rules (e.g. Size and Transparency are both a NumberSequence, but have different purposes and rules)

If the types match, the property will be highlighted when hovering over it and holding the control key. Selection this way supports an unlimited amount of properties. Changes made to any selected property will replicate to all other selected properties. This way, editing multiple properties at once is made easy.

Right clicking a property will allow you to copy it's value or paste it's value to another property. This follows the same rules as the selection.

Also, something to keep in mind while using the plugin is that changes are recorded automatically and can be reverted through CTRL+Z. This is also the case for changes made to multiple properties at once.

## Texture Storage/Picker

The texture picker contains a simple file system in which textures and folders can be stored up to any depth. This menu can be opened by clicking the Texture Storage button in the topbar, or by clicking a texture property.

Within this view, textures or folders can be created using the plus button in the top right. Alternatively, you can import data through the import button, allowing you to import via instances (allowing you to easily import e.g. VFX baseplates) or JSON, which allows you to share textures with others. You can also export data into JSON through the export button, which allows you to export either your current folder or the entire storage.

When you've got a list of textures, you can hold the control key to select multiple textures. Alternatively, you can hold shift and click to select a range of textures. You can then right click to open up a context menu that allows you to move or delete the textures.

When you right click a texture, you can edit it, move it or delete it. The texture storage has full support for flipbooks and displays them in the editor, but requires HTTP request support to display some textures. If a texture is not displayed, turn on HTTP requests in the Studio settings.

## NumberSequence Editor

The NumberSequence editor is a carbon copy of the existing Studio editor, with a few added features. Clicking in the graph will place a graph point which is by default linearly interpolated. However, right clicking will open up a context menu in which easing styles and directions can be configured. Selecting "bezier" will show handles that can be dragged in order to customize the bezier curve. These styles will be saved through attributes. If this attribute is lost, all easing data will be reset and a new curve will be generated based on the current points.

Nodes can be dragged around freely and order will be arranged depending on position. The envelope handle can be dragged up and down freely and will limit itself based on the maximum and minimum values set.

Values can also be customized by hand through the text boxes in the bottom of the screen.

## ColorSequence Editor

The ColorSequence editor is just a visual and functional refresh of the existing editor. As such, there's no new features to be found here and usage should be fairly straightforward.

## Settings

The settings allow you to customize certain aspects of the plugin. The available options are:

  * **Lightweight Mode**: This feature is further explained below.
  * **Max Instance Depth**: The max depth the instance tree will show. This is useful for performance reasons, as the plugin will have to load all instances and their properties.
  * **Max Size**: "Size" properties have a set upper limit by Roblox. This setting allows you to set a custom limit for these properties, which is useful when you want to make particularly large effects.
  * **Max Squash:**: The exact same as the Max Size setting, but for "Squash" properties.
  * **Treeview Virtual Scroller**: The tree view contains thousands of UI instances and can be slow to scroll. This setting will unload all properties until they are in view. This will reduce lag at the cost of visual fidelity, as properties may take a moment to load in. These properties are however cached, and the initial performance hit will only be present the first time you scroll to a new instance.
  * **Graph Editor Default Style**: The default style for the graph editor when creating new nodes. The default is "Linear".

## Lightweight Mode

We recognize that getting used to the plugin may require an initial learning curve. We want to make this plugin as easy to use as possible, and as such, Lightweight Mode was created. It is designed to mimic the existing Studio properties window as closely as possible, while still offering the benefits of the plugin. This mode can be toggled in the settings. We recommend you to place this mode where you'd normally place your properties window.

This mode gets rid of the topbar, search mode dropdown and instance headers (as long as there is only one instance). When multiple instances are selected, each instance will be individually displayed with their headers, allowing modification of multiple properties through holding control. The children are not shown.

### Clone this wiki locally


[ VirtualButFake ](https://github.com/VirtualButFake) / ** [vfx-editor](https://github.com/VirtualButFake/vfx-editor) ** Public

  * [ Notifications ](https://github.com/login?return_to=%2FVirtualButFake%2Fvfx-editor) You must be signed in to change notification settings
  * [ Fork 1 ](https://github.com/login?return_to=%2FVirtualButFake%2Fvfx-editor)
  * [ Star  21 ](https://github.com/login?return_to=%2FVirtualButFake%2Fvfx-editor)

# Home

Jump to bottom

Tijn Epema edited this page Jul 27, 2024 · [12 revisions](https://github.com/VirtualButFake/vfx-editor/wiki/Home/_history)

Welcome to the vfx-editor wiki!

### Clone this wiki locally


# QuickZone

    An unopinionated, physics-free spatial library for Roblox. Maintain 60 FPS with over a million zones.
    View docs

## Why use QuickZone?

**The Physics Bottleneck.** Traditional zone libraries act as wrappers for Roblox's physics engine (e.g., `GetPartsInPart` or `.Touched`), binding spatial logic to collision meshes. This results in expensive geometry calculations, unpredictable overhead, low flexibility, and much worse performance as the number of zones grows.

**Clean Architecture.** QuickZone takes a different approach. By separating *what* you track (Groups), *where* you track them (Zones), and *how* you respond (Observers), it eliminates monolithic, instance-bound logic and keeps your codebase clean.

**Physics-Free Scaling.** QuickZone achieves *O(N log Z)* scaling by bypassing the physics engine in favor of pure geometric math and a custom Linear Bounding Volume Hierarchy (LBVH). Performance is driven by the number of entities, while the map size is virtually irrelevant.

**Unopinionated API.** Whether you prefer classic event-driven programming, robust lifecycle management (`observe()`), or zero-allocation polling for ECS architectures, QuickZone can fit your workflow.

**Total Performance Control.** The runtime cost is entirely in your control. Through a budgeted scheduler, the workload is smeared across frames and only consumes as much CPU time as you explicitly allow. Paired with contiguous arrays that produce virtually zero garbage collection (GC) pressure, QuickZone produces a flat, predictable performance profile.

## What it offers

- **Endless Scale**: The number of zones has zero impact on performance. Maintain 60 FPS even with over a million zones in your game.

- **Track Anything**: Track BaseParts, Models, Attachments, Bones, Cameras, or even custom tables. If it has a position, QuickZone can track it.

- **Budgeted Scheduler**: Set a hard frame budget (e.g., 1ms) to completely eliminate lag spikes. Workloads are smeared across frames to maintain a flat, predictable performance profile.

- **Shape Support**: Support for Blocks, Balls, Cylinders, Wedges and CornerWedges without relying on physics collision meshes.

- **Lifecycle Management**: Use the `observe` pattern for 100% reliable cleanup. Say goodbye to juggling `onEnter` and `onExit` events (though classic event-driven programming is still supported).

- **ECS & Data-Oriented**: Built-in support for zero-allocation iterators and deterministic manual stepping, making it a perfect fit for ECS architectures.

- **Decoupled Architecture**: Separate game logic from spatial instances. Bind behaviors directly to categories of entities (Players, NPCs, Projectiles) for a clean, scalable codebase.

- **Zero-Allocation Runtime**: By utilizing contiguous arrays and object pooling, QuickZone produces close to zero GC pressure, avoiding memory-related stutters.

- **No Dependencies**: QuickZone is a standalone, lightweight library that does not rely on any other external packages.


### Endless Scale

The number of zones has zero impact on performance. Maintain 60 FPS even with over a million zones in your game.

### Track Anything

Track BaseParts, Models, Attachments, Bones, Cameras, or even custom tables. If it has a position, QuickZone can track it.

### Budgeted Scheduler

Set a hard frame budget (e.g., 1ms) to completely eliminate lag spikes. Workloads are smeared across frames to maintain a flat, predictable performance profile.

### Shape Support

Support for Blocks, Balls, Cylinders, Wedges and CornerWedges without relying on physics collision meshes.

### Lifecycle Management

Use the `observe` pattern for 100% reliable cleanup. Say goodbye to juggling `onEnter` and `onExit` events (though classic event-driven programming is still supported).

### ECS & Data-Oriented

Built-in support for zero-allocation iterators and deterministic manual stepping, making it a perfect fit for ECS architectures.

### Decoupled Architecture

Separate game logic from spatial instances. Bind behaviors directly to categories of entities (Players, NPCs, Projectiles) for a clean, scalable codebase.

### Zero-Allocation Runtime

By utilizing contiguous arrays and object pooling, QuickZone produces close to zero GC pressure, avoiding memory-related stutters.

### No Dependencies

QuickZone is a standalone, lightweight library that does not rely on external packages.


# Iridium - Luau Bytecode Deserializer

Iridium is a powerful Luau bytecode deserializer and disassembler written in Luau itself. It allows you to analyze, inspect, and understand compiled Luau bytecode by breaking it down into its constituent components.

## Description

Iridium provides a comprehensive toolkit for working with Luau bytecode. It can parse bytecode from various Luau versions (3-6) and extract detailed information about functions, constants, instructions, and more. This makes it an invaluable tool for reverse engineering, debugging, and understanding how Luau code is executed at a low level.

## Features

- [x] Bytecode Parsing
  - [x] Support for Luau bytecode versions 3-6
  - [x] Typed bytecode support (version 4-6)
  - [x] Complete bytecode structure analysis

- [x] Function Analysis
  - [x] Function prototype extraction
  - [x] Stack size information
  - [x] Parameter count detection
  - [x] Upvalue tracking
  - [x] Vararg function detection

- [x] Instruction Decoding
  - [x] Complete instruction set support
  - [x] Opcode identification
  - [x] Operand extraction
  - [x] Instruction flow analysis

- [x] Constant Pool Management
  - [x] String constants
  - [x] Number constants
  - [x] Boolean constants
  - [x] Table constants
  - [x] Vector constants
  - [x] Nil constants
  - [x] Closure constants
  - [x] Import constants

- [ ] Type System
  - [x] Type version detection
  - [ ] Userdata type mapping
  - [x] Type flags parsing
  - [x] Type data parsing
    - [x] Version 1
    - [x] Version 2
    - [x] Version 3

- [x] Debug Info
  - [x] Line information
  - [x] Debug name

- [x] Utility Functions
  - [x] String reference resolution
  - [x] Type mapping utilities
  - [x] Hexadecimal conversion

## Usage

```luau
local Iridium, Types = require("Iridium"), require("Iridium/Types")

-- Deserialize bytecode from a string or buffer
local deserialized = Iridium:Deserialize(bytecodeData)

-- Access function information
local mainFunction = deserialized.Protos[deserialized.ProtoEntryPoint]

-- Inspect instructions
for i, instruction in ipairs(mainFunction.Instructions) do
    print(instruction.Code, instruction.Encodings.A, instruction.Encodings.B, instruction.Encodings.C)
end

-- Access constants
for i, constant in ipairs(mainFunction.Constants) do
    print(constant.ClassName, constant)
end

For advanced usage I'd suggest checking [this example](init.client.luau) out

## Building from Source

Click [here](CONTRIBUTING.md#development-environment-setup).

## Contributing

Contributions are welcome! [Feel free to submit issues or pull requests to help improve Iridium.](CONTRIBUTING.md#pull-request-process)

## Authors

- ActualMasterOogway - Creator and main developer

## Acknowledgements

- [atrexus](https://github.com/atrexus/) - [Unluau](https://github.com/atrexus/unluau/tree/archive/) was a really helpful resource
- [lovre](https://github.com/lovrewe/) - [Platinum](https://github.com/Lovreware/Platinum) helped me find where I was underreading/overreading
- [GRH](https://github.com/grh-official/) - Helped me reading line information correctly ❤


# OverHash's roblox-ts libraries

These are libraries I have developed and maintain for the [`roblox-ts`](https://github.com/roblox-ts/roblox-ts) ecosystem.

They are hosted on the roblox-ts `npm` registry under the `@rbxts` scope.

## Libraries

Here are the following packages which I am actively maintaining:

- [`abbreviate`](https://www.npmjs.com/package/@rbxts/abbreviate): A simple number abbreviator
- [`janitor`](https://www.npmjs.com/package/@rbxts/janitor): Typings for howmanysmall's forked [`janitor module`](https://github.com/howmanysmall/Janitor)
- [`profileservice`](https://www.npmjs.com/package/@rbxts/profileservice): Typings for Mad Studio's [`datastore library`](https://github.com/MadStudioRoblox/ProfileService)
- [`quicksave`](https://www.npmjs.com/package/@rbxts/quicksave): Typings for evaera's [`datastore library`](https://github.com/evaera/quicksave), now archived.
- [`react-redux`](https://www.npmjs.com/package/@rbxts/react-redux): Typings for chriscerie's [`react-redux package`](https://github.com/chriscerie/react-redux)
- [`virtualized-list`](https://www.npmjs.com/package/@rbxts/virtualized-list): Typings of jsdotlua's [`virtualized react scroller`](https://github.com/jsdotlua/virtualized-list-lua)

## Contributing

If a package is on my active library list, feel free to make an issue. PRs are, of course, welcome.

1. clone this repository: `git clone git@github.com:OverHash/Roblox-TS-Libraries.git`
2. run `npm install` in the root directory of the repository
    - this repository supports using [`volta`](https://volta.sh) to handle your node installation, if you choose to use it.
3. navigate to the relevant directory of the package you wish to make a change for
4. `npm install` for the appropriate packages, and make your changes!
5. make sure to test your changes!
6. update any changelogs


<source media="(prefers-color-scheme: dark)" srcset="https://user-images.githubusercontent.com/80087248/229268959-a3cb2881-3022-4acf-afc5-b6007e94ff3d.png">
    <source media="(prefers-color-scheme: light)" srcset="https://user-images.githubusercontent.com/80087248/229328903-68ae2d94-aa31-4651-bce3-45ae6159897c.png">

  Shime is a module that allows you to easily create a shimmer effect on any GuiObject.

## About

> [!TIP]
> Visit the [Shime Wiki](https://github.com/RyanLua/Shime/wiki) for more information about Shime, including installation, usage, and documentation.

Shime is a module that allows you to easily create a shimmer effect on any [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject). Shime is easy to use and extremely customizable. Shime achieves this by using a [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient) that is animated using a [`Tween`](https://create.roblox.com/docs/reference/engine/classes/Tween). Shime will detect the GuiObject's size and position to apply the proper gradient to it and will clip to the guiobject's size including [`UICorners`](https://create.roblox.com/docs/reference/engine/classes/UICorner).

## Demo

> [!NOTE]
> [Shimmer Demo](https://www.roblox.com/games/12865649978) has Content Sharing enabled. You can download the demo from the Roblox website by clicking the ellipsis (`...`)and selecting `Edit`.

We provide an open-source demo of Shime, you can [view the demo](https://www.roblox.com/games/12865649978) on Roblox. Feel free to use the demo as a reference for how to use Shime and modify it to your liking.

## Features

Shime has a lot of features that allow you to customize the shimmer effect to your liking. Here are some of the features:

### Tween Animations

Shime uses a TweenService to animate the gradient. This allows you to customize the animation to your liking. You can change the time, style, direction, repeat count, and delay time. You can change the TweenInfo of the animation by using the [`Shime.new`](https://github.com/RyanLua/Shime/wiki/Documentation#constructors-1) constructor and passing in the parameters you want to change.

### Easy & Versatile

Shime is extremely versatile, working on nearly all GuiObjects and allows easy customization through its class. You can use Shime on any GuiObject including TextButtons, TextLabels, ImageLabels, Frames, and more. Shime will automatically detect the GuiObject's size and position to apply the proper gradient to it and will clip to the guiobject's size including any UICorner instances.

### Informative Wiki

Shime has its own GitHub Wiki with an included [Getting Started](https://github.com/RyanLua/Shime/wiki/Getting-Started) page that will help you get started with Shime which includes multiple installation methods, usage guides, and real-world code samples. The wiki also includes a [Documentation](https://github.com/RyanLua/Shime/wiki/Documentation) page with all the methods, properties, and constructors for Shime.

## Installation

> [!NOTE]
> Visit the [**Installation**](https://github.com/RyanLua/Shime/wiki/Getting-Started#installation) page more information on installation. Below is a quick summary of the installation methods.

Shime is easy to install. They are many ways to install Shime. The links below will take you to the installation method you want to use.

| Install Method | Asset Link |
| :--- | :--- |
| [Install from Roblox](https://github.com/RyanLua/Shime/wiki/Getting-Started#install-from-roblox) | [Shimmer - Creator Marketplace](https://create.roblox.com/marketplace/asset/12959615382) |
| [Install from GitHub](https://github.com/RyanLua/Shime/wiki/Getting-Started#install-from-github) | [Shime - GitHub](https://github.com/RyanLua/Shime/releases)

## Usage

> [!NOTE]
> Visit the [**Usage**](https://github.com/RyanLua/Shime/wiki/Getting-Started#usage) page more information on usage, including additional code samples.

Shime is easy to use. The API is simple and easy to understand. Below is a simple code sample of how to create a shimmer effect on a GuiObject using Shime.

```lua
-- Require the Shime module
local Shime = require(game.ReplicatedStorage.Shime)

-- Create a new Shimmer and play it
local shimmer = Shime.new(script.Parent)
shimmer:Play()

## Documentation

> [!NOTE]
> Visit the [**Documentation**](https://github.com/RyanLua/Shime/wiki/Documentation) page more information on the Shime module and more details about Shime Constructors, Methods, and Properties.

Shime has many methods and properties that allow you to customize the shimmer effect to your liking. Below is a summary of all the methods, properties, and constructors for Shime.

### [Constructors](https://github.com/RyanLua/Shime/wiki/Documentation#constructors-1)

| new(parent: [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject)) |
| :--- |
| Returns a [`table`](https://create.roblox.com/docs/reference/engine/libraries/table) containing `Shimmer`'s metatable. Shimmers using default parameters. |

| new(parent: [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject), time: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)?, style: [`EasingStyle`](https://create.roblox.com/docs/reference/engine/enums/EasingStyle)?, direction: [`EasingDirection`](https://create.roblox.com/docs/reference/engine/enums/EasingDirection)?, repeatCount: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)?, reverses: [`boolean`](https://create.roblox.com/docs/scripting/luau/booleans)?, delayTime: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)?) |
| :--- |
| Returns a [`table`](https://create.roblox.com/docs/reference/engine/libraries/table) containing `Shimmer`'s metatable. Shimmers using specified parameters. |

### [Properties](https://github.com/RyanLua/Shime/wiki/Documentation#properties-1)

| Property | Description |
| :--- | :--- |
| PlaybackState: [`Enum.PlaybackState`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState) | This read-only property will return [`Enum.PlaybackState`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState). |

### [Methods](https://github.com/RyanLua/Shime/wiki/Documentation#methods-1)

| GetFrame(): [`Frame`](https://create.roblox.com/docs/reference/engine/classes/Frame) |
| :--- |
| The GetFrame function returns the [`Frame`](https://create.roblox.com/docs/reference/engine/classes/Frame) that is used to create the shimmer effect. This frame can be customized after the shimmer is created.|

| GetGradient(): [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient) |
| :--- |
| The GetGradient function returns the [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient) that is used to create the shimmer effect. This gradient can be customized after the shimmer is created. |

| Stop(): `void` |
| :--- |
| The Stop function halts `Shimmer`. If [`Shimmer:Play()`](https://github.com/RyanLua/Shime/wiki/Documentation#play) is called again the `Shimmer` will resume interpolating towards their destination but take the full length of the time to do so. |

| Pause(): `void` |
| :--- |
| The Pause function halts `Shimmer`. If you call [`Shimmer:Play()`](https://github.com/RyanLua/Shime/wiki/Documentation#play) again, the shimmer resumes playback from the moment it was paused. |

| Play(): `void` |
| :--- |
The Play function starts `Shimmer`. Note that if a shimmer has already begun calling Play will have no effect unless the shimmer has finished or has been stopped (either by [`Shimmer:Stop()`](https://github.com/RyanLua/Shime/wiki/Documentation#stop) or [`Shimmer:Pause()`](https://github.com/RyanLua/Shime/wiki/Documentation#pause). |

## Contributing

We worked hard to make this **open-source**, so please **contribute at your will**. Go ahead and [fork this repository](https://github.com/RyanLua/Shime/fork), and maybe we will merge together someday.

If you **have a change** you want to make, please [open a new pull request](https://github.com/RyanLua/Shime/compare).

If you see a **bug or want a feature**, please [open an issue](https://github.com/RyanLua/Shime/issues/new/choose).

To get started to go [CONTRIBUTING.md](https://github.com/RyanLua/Shime/blob/main/.github/CONTRIBUTING.md) on how to contribute.

## License

Shime is **licensed under** [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). See [LICENSE.txt](LICENSE.txt) for details.


This repository was archived by the owner on Aug 20, 2024. It is now read-only.

[ ryanlua ](https://github.com/ryanlua) / ** [Shime](https://github.com/ryanlua/Shime) ** Public archive

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/RyanLua/Shime/wiki/Documentation#properties-1).

  * [ Notifications ](https://github.com/login?return_to=%2Fryanlua%2FShime) You must be signed in to change notification settings
  * [ Fork 1 ](https://github.com/login?return_to=%2Fryanlua%2FShime)
  * [ Star  29 ](https://github.com/login?return_to=%2Fryanlua%2FShime)

# Documentation

Jump to bottom

Ryan edited this page Apr 8, 2023 · [10 revisions](https://github.com/ryanlua/Shime/wiki/Documentation/_history)

Documentation for the Shime module. Shime is a class that allows you to create a shimmer effect on any GuiObject on Roblox. Based off of Roblox's Shimmer module from CoreGui.

## Summary

### Constructors

new(parent: [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject))
Returns a [`table`](https://create.roblox.com/docs/reference/engine/libraries/table) containing `Shimmer`'s metatable. Shimmers using default parameters.
new(parent: [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject), time: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)?, style: [`EasingStyle`](https://create.roblox.com/docs/reference/engine/enums/EasingStyle)?, direction: [`EasingDirection`](https://create.roblox.com/docs/reference/engine/enums/EasingDirection)?, repeatCount: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)?, reverses: [`boolean`](https://create.roblox.com/docs/scripting/luau/booleans)?, delayTime: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)?)
Returns a [`table`](https://create.roblox.com/docs/reference/engine/libraries/table) containing `Shimmer`'s metatable. Shimmers using specified parameters.

### Properties

Property | Details
PlaybackState: [`Enum.PlaybackState`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState) | This read-only property will return [`Enum.PlaybackState`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState).

### Methods

GetFrame(): [`Frame`](https://create.roblox.com/docs/reference/engine/classes/Frame)
The GetFrame function returns the [`Frame`](https://create.roblox.com/docs/reference/engine/classes/Frame) that is used to create the shimmer effect. This frame can be customized after the shimmer is created.
GetGradient(): [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient)
The GetGradient function returns the [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient) that is used to create the shimmer effect. This gradient can be customized after the shimmer is created.
Stop(): `void`
The Stop function halts `Shimmer`. If `Shimmer:Play()` is called again the `Shimmer` will resume interpolating towards their destination but take the full length of the time to do so.
Pause(): `void`
The Pause function halts `Shimmer`. If you call `Shimmer:Play()` again, the shimmer resumes playback from the moment it was paused.
Play(): `void`
The Play function starts `Shimmer`. Note that if a shimmer has already begun calling Play will have no effect unless the shimmer has finished or has been stopped (either by `Shimmer:Stop()` or `Shimmer:Pause()`).

## Constructors

### new

Creates a new `Shimmer` from the provided parameters.

#### Parameters

Parameter | Details
parent: [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject) |
time: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)? | Default Value: "1"
style: [`EasingStyle`](https://create.roblox.com/docs/reference/engine/enums/EasingStyle)? | Default Value: "EasingStyle.Linear"
direction: [`EasingDirection`](https://create.roblox.com/docs/reference/engine/enums/EasingDirection)? | Default Value: "EasingDirection.In"
repeatCount: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)? | Default Value: "-1"
reverses: [`boolean`](https://create.roblox.com/docs/scripting/luau/booleans)? | Default Value: "false"
delay: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)? | Default Value: "0"

## Properties

### PlaybackState

This read-only property will return [`Enum.PlaybackState`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState).

This property is updated when the playback of the Shimmer is updated. This can be caused by a method changing the Shimmer, the Shimmer finishing, etc.

As PlaybackState is read only it can not be used to change the playback of the Shimmer.

#### Code Samples

This code sample contains demonstrates when the Shimmer.PlaybackState property is updated and how to utilize it.

A shimmer is created and played. Every 1 second the shimmer is paused then played again. The PlaybackState property is then printed to the output.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Loop shimmers play and pause every 1 second
    while true do
        task.wait(1)
        if shimmer.PlaybackState == Enum.PlaybackState.Playing then
            -- Pause the shimmer and print PlaybackState
            shimmer:Pause()
            print("shimmer.PlaybackState: " .. tostring(shimmer.PlaybackState))
        elseif shimmer.PlaybackState == Enum.PlaybackState.== Enum.PlaybackState.Playing then
            -- Play the shimmer and print PlaybackState
            shimmer:Play()
            print("shimmer.PlaybackState: " .. tostring(shimmer.PlaybackState))
        end
    end

## Methods

### GetFrame

The GetFrame function returns the [`Frame`](https://create.roblox.com/docs/reference/engine/classes/Frame) that is used to create the shimmer effect. This frame can be customized after the shimmer is created.

#### Returns

    Frame

#### Code Samples

This code sample contains demonstrates how to customize the [`Frame`](https://create.roblox.com/docs/reference/engine/classes/Frame) that is used to create the shimmer effect.

A shimmer is created and played. The [`Frame`](https://create.roblox.com/docs/reference/engine/classes/Frame) that is used to create the shimmer effect is then customized.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Customize the Frame that creates the shimmer effect
    local shimmerFrame = shimmer:GetFrame()
    shimmerFrame.BackgroundTransparency = 0.5

### GetGradient

The GetGradient function returns the [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient) that is used to create the shimmer effect. This gradient can be customized after the shimmer is created.

#### Returns

    UIGradient

#### Code Samples

This code sample contains demonstrates how to customize the [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient) that is used to create the shimmer effect.

A shimmer is created and played. The [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient) that is used to create the shimmer effect is then customized.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Customize the UIGradient that creates the shimmer effect
    local shimmerGradient = shimmer:GetGradient()
    shimmerGradient.Rotation = 90

### Stop

Stops the `Shimmer`. Sets `Shimmer.PlaybackState` to [`Enum.PlaybackState.Cancelled`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState).

#### Returns

    void

#### Code Samples

This sample gives a simple demonstration of what each of the Shimmer functions (Shimmer.Play, Shimmer.Stop and Shimmer.Pause).

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Pause the Shimmer when the mouse enters the GuiObject
    script.Parent.MouseEnter:Connect(function()
        shimmer:Pause()
    end)

    -- Stop the Shimmer when the mouse leaves the GuiObject
    script.Parent.MouseButton1Click:Connect(function()
        shimmer:Stop()
    end)

### Pause

Pauses the `Shimmer`. Sets `Shimmer.PlaybackState` to [`Enum.PlaybackState.Paused`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState).

#### Returns

    void

#### Code Samples

This sample gives a simple demonstration of what each of the Shimmer functions (Shimmer.Play, Shimmer.Stop and Shimmer.Pause).

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Pause the Shimmer when the mouse enters the GuiObject
    script.Parent.MouseEnter:Connect(function()
        shimmer:Pause()
    end)

    -- Stop the Shimmer when the mouse leaves the GuiObject
    script.Parent.MouseButton1Click:Connect(function()
        shimmer:Stop()
    end)

### Play

Plays the `Shimmer`. Sets `Shimmer.PlaybackState` to [`Enum.PlaybackState.Playing`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState).

#### Returns

    void

#### Code Samples

This sample gives a simple demonstration of what each of the Shimmer functions (Shimmer.Play, Shimmer.Stop and Shimmer.Pause).

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Pause the Shimmer when the mouse enters the GuiObject
    script.Parent.MouseEnter:Connect(function()
        shimmer:Pause()
    end)

    -- Stop the Shimmer when the mouse leaves the GuiObject
    script.Parent.MouseButton1Click:Connect(function()
        shimmer:Stop()
    end)

# 🎉 Shime is officially released!

Shime has officially been released.

Shime development will be split between normal releases and long term support (LTS) releases. For those seeking stable builds with minor API changes or not worrying about having to update Shime as frequently you can choose the LTS release which will be specifically marked with LTS. For those seeking the lastest stable changes and occasional API changes you can select the normal release.

Shime has added new methods in it's first release from pre-release. These methods include `:GetFrame()` and `:GetGradient()` which will return their respective Instances. Seek documentation for more details.

# Shime Wiki

Shimmer is a class required from the Shime module that allows you to easily create a shimmer effect on any GuiObject based off of CoreGui's Shimmer module.

## [Home](https://github.com/RyanLua/Shime/wiki/Home)

  * [What is Shime?](https://github.com/RyanLua/Shime/wiki/Home#what-is-shime)
  * [Why use Shime?](https://github.com/RyanLua/Shime/wiki/Home#why-use-shime)
  * [How to use Shime?](https://github.com/RyanLua/Shime/wiki/Home#how-to-use-shime)

## [Getting Started](https://github.com/RyanLua/Shime/wiki/Getting-Started)

  * [Installation](https://github.com/RyanLua/Shime/wiki/Getting-Started#installation)
    * [Install from Roblox](https://github.com/RyanLua/Shime/wiki/Getting-Started#install-from-roblox)
    * [Install from GitHub](https://github.com/RyanLua/Shime/wiki/Getting-Started#install-from-github)
  * [Usage](https://github.com/RyanLua/Shime/wiki/Getting-Started#usage)
    * [Creating a Shimmer](https://github.com/RyanLua/Shime/wiki/Getting-Started#creating-a-shimmer)
    * [Creating a Shimmer with a Custom Animation](https://github.com/RyanLua/Shime/wiki/Getting-Started#creating-a-shimmer-with-a-custom-animation)
    * [Pausing & Stopping a Shimmer](https://github.com/RyanLua/Shime/wiki/Getting-Started#pausing--stopping-a-shimmer)
    * [Reading Shimmer Properties](https://github.com/RyanLua/Shime/wiki/Getting-Started#reading-shimmer-properties)
    * [Creating a Shimmer with a Custom Frame and Gradient](https://github.com/RyanLua/Shime/wiki/Getting-Started#creating-a-shimmer-with-a-custom-frame-and-gradient)

## [Documentation](https://github.com/RyanLua/Shime/wiki/Documentation)

  * [Summary](https://github.com/RyanLua/Shime/wiki/Documentation#summary)
    * [Constructors](https://github.com/RyanLua/Shime/wiki/Documentation#constructors)
    * [Properties](https://github.com/RyanLua/Shime/wiki/Documentation#properties)
    * [Methods](https://github.com/RyanLua/Shime/wiki/Documentation#methods)
  * [Constructors](https://github.com/RyanLua/Shime/wiki/Documentation#constructors-1)
    * [new](https://github.com/RyanLua/Shime/wiki/Documentation#new)
  * [Properties](https://github.com/RyanLua/Shime/wiki/Documentation#properties-1)
    * [PlaybackState](https://github.com/RyanLua/Shime/wiki/Documentation#playbackstate)
  * [Methods](https://github.com/RyanLua/Shime/wiki/Documentation#methods-1)
    * [GetFrame](https://github.com/RyanLua/Shime/wiki/Documentation#getframe)
    * [GetPlaybackState](https://github.com/RyanLua/Shime/wiki/Documentation#getplaybackstate)
    * [Stop](https://github.com/RyanLua/Shime/wiki/Documentation#stop)
    * [Pause](https://github.com/RyanLua/Shime/wiki/Documentation#pause)
    * [Play](https://github.com/RyanLua/Shime/wiki/Documentation#play)

### Clone this wiki locally


This repository was archived by the owner on Aug 20, 2024. It is now read-only.

[ ryanlua ](https://github.com/ryanlua) / ** [Shime](https://github.com/ryanlua/Shime) ** Public archive

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/RyanLua/Shime/wiki).

  * [ Notifications ](https://github.com/login?return_to=%2Fryanlua%2FShime) You must be signed in to change notification settings
  * [ Fork 1 ](https://github.com/login?return_to=%2Fryanlua%2FShime)
  * [ Star  29 ](https://github.com/login?return_to=%2Fryanlua%2FShime)

# Home

Jump to bottom

FloofyProtoBomb edited this page Mar 16, 2024 · [9 revisions](https://github.com/ryanlua/Shime/wiki/Home/_history)

Welcome to the Shime wiki! Shimmer is a class required from the Shime module that allows you to easily create a shimmer effect on any GuiObject just like how Roblox does.

## What is Shime and Shimmer?

**Shime** allows you to easily create a shimmer effect on any GuiObject on Roblox like the example below.

## Why should I use Shime?

Shime is lightweight and opened-sourced, so you can easily modify it to your liking. It also has familar methods such as `Shimmer:Play()` and `Shimmer:Pause()` to control the playback state of the Shimmer, based off the [TweenBase](https://create.roblox.com/docs/reference/engine/classes/TweenBase) class.

Shimmer from Roblox is locked to only CoreGui meaning that normal script can't access it. Shime allows you to create a Shimmer on any GuiObject from any script without needing Roblox Script Security privileges.

## How do I use Shime?

To use Shime, you can visit the [Getting Started](https://github.com/RyanLua/Shime/wiki/Getting-Started) page to learn how to install Shime. It contains a guide on how to install Shime from GitHub or Roblox and how to use Shime in your scripts. You can also visit the [Documentation](https://github.com/RyanLua/Shime/wiki/Documentation) page to learn more about the Shime and it's constructors, methods, and properties.

## Getting Started

You can get started by clicking the links in the sidebar.

# 🎉 Shime is officially released!

Shime has officially been released.

Shime development will be split between normal releases and long term support (LTS) releases. For those seeking stable builds with minor API changes or not worrying about having to update Shime as frequently you can choose the LTS release which will be specifically marked with LTS. For those seeking the lastest stable changes and occasional API changes you can select the normal release.

Shime has added new methods in it's first release from pre-release. These methods include `:GetFrame()` and `:GetGradient()` which will return their respective Instances. Seek documentation for more details.

# Shime Wiki

Shimmer is a class required from the Shime module that allows you to easily create a shimmer effect on any GuiObject based off of CoreGui's Shimmer module.

## [Home](https://github.com/RyanLua/Shime/wiki/Home)

  * [What is Shime?](https://github.com/RyanLua/Shime/wiki/Home#what-is-shime)
  * [Why use Shime?](https://github.com/RyanLua/Shime/wiki/Home#why-use-shime)
  * [How to use Shime?](https://github.com/RyanLua/Shime/wiki/Home#how-to-use-shime)

## [Getting Started](https://github.com/RyanLua/Shime/wiki/Getting-Started)

  * [Installation](https://github.com/RyanLua/Shime/wiki/Getting-Started#installation)
    * [Install from Roblox](https://github.com/RyanLua/Shime/wiki/Getting-Started#install-from-roblox)
    * [Install from GitHub](https://github.com/RyanLua/Shime/wiki/Getting-Started#install-from-github)
  * [Usage](https://github.com/RyanLua/Shime/wiki/Getting-Started#usage)
    * [Creating a Shimmer](https://github.com/RyanLua/Shime/wiki/Getting-Started#creating-a-shimmer)
    * [Creating a Shimmer with a Custom Animation](https://github.com/RyanLua/Shime/wiki/Getting-Started#creating-a-shimmer-with-a-custom-animation)
    * [Pausing & Stopping a Shimmer](https://github.com/RyanLua/Shime/wiki/Getting-Started#pausing--stopping-a-shimmer)
    * [Reading Shimmer Properties](https://github.com/RyanLua/Shime/wiki/Getting-Started#reading-shimmer-properties)
    * [Creating a Shimmer with a Custom Frame and Gradient](https://github.com/RyanLua/Shime/wiki/Getting-Started#creating-a-shimmer-with-a-custom-frame-and-gradient)

## [Documentation](https://github.com/RyanLua/Shime/wiki/Documentation)

  * [Summary](https://github.com/RyanLua/Shime/wiki/Documentation#summary)
    * [Constructors](https://github.com/RyanLua/Shime/wiki/Documentation#constructors)
    * [Properties](https://github.com/RyanLua/Shime/wiki/Documentation#properties)
    * [Methods](https://github.com/RyanLua/Shime/wiki/Documentation#methods)
  * [Constructors](https://github.com/RyanLua/Shime/wiki/Documentation#constructors-1)
    * [new](https://github.com/RyanLua/Shime/wiki/Documentation#new)
  * [Properties](https://github.com/RyanLua/Shime/wiki/Documentation#properties-1)
    * [PlaybackState](https://github.com/RyanLua/Shime/wiki/Documentation#playbackstate)
  * [Methods](https://github.com/RyanLua/Shime/wiki/Documentation#methods-1)
    * [GetFrame](https://github.com/RyanLua/Shime/wiki/Documentation#getframe)
    * [GetPlaybackState](https://github.com/RyanLua/Shime/wiki/Documentation#getplaybackstate)
    * [Stop](https://github.com/RyanLua/Shime/wiki/Documentation#stop)
    * [Pause](https://github.com/RyanLua/Shime/wiki/Documentation#pause)
    * [Play](https://github.com/RyanLua/Shime/wiki/Documentation#play)

### Clone this wiki locally


This repository was archived by the owner on Aug 20, 2024. It is now read-only.

[ ryanlua ](https://github.com/ryanlua) / ** [Shime](https://github.com/ryanlua/Shime) ** Public archive

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/RyanLua/Shime/wiki/Getting-Started).

  * [ Notifications ](https://github.com/login?return_to=%2Fryanlua%2FShime) You must be signed in to change notification settings
  * [ Fork 1 ](https://github.com/login?return_to=%2Fryanlua%2FShime)
  * [ Star  29 ](https://github.com/login?return_to=%2Fryanlua%2FShime)

# Getting Started

Jump to bottom

Ryan Luu edited this page Dec 21, 2023 · [5 revisions](https://github.com/ryanlua/Shime/wiki/Getting-Started/_history)

This page will cover installation and basic usage including code samples of Shime. For more information about Shime, you can read the [Documentation](https://github.com/RyanLua/Shime/wiki/Documentation).

## Installation

Shime is simple and straightforward, you will need the require Shime's module script as a variable and then you can use constructors such as [`Shime.new()`](https://github.com/RyanLua/Shime/wiki/Documentation#new) to create a new Shimmer object. Below are two methods to install Shime.

### Install from Roblox

> **Warning** This installation method will **not allow for automatic updates** including **security updates**. It is recommended to use the Require from Roblox method. Only use this method if you are planning to **use a modified version of Shime**.

  1. Get the Shime module from the [Creator Marketplace](https://create.roblox.com/marketplace/asset/12959615382).

  2. Open Roblox Studio and create a new place or open an existing place.

  3. Open or locate the [Toolbox](https://create.roblox.com/docs/studio/toolbox).

  4. Open your [Inventory](https://create.roblox.com/docs/studio/toolbox#inventory) from the [Toolbox](https://create.roblox.com/docs/studio/toolbox).

  5. Search for `Shimmer Module` created by `WinnersTakesAll` and click on it.

  6. Insert `Shimmer Module` into the [Explorer](https://create.roblox.com/docs/studio/explorer) and drag into [ReplicatedStorage](https://create.roblox.com/docs/reference/engine/classes/ReplicatedStorage).

### Install from GitHub

> **Warning** This installation method will not allow for automatic updates including security updates. It is recommended to use the Require from Roblox method. Only use this method if you are planning to use a modified version of Shime.

You can install Shime from GitHub, this is intended if you want to use a modified version of Shime.

  1. Download the `Shime.rbxm` file from [Releases](https://github.com/RyanLua/Shime/releases).

  2. Open Roblox Studio and create a new place or open an existing place.

  3. Go to the [Explorer](https://create.roblox.com/docs/studio/explorer) and right click on [`ReplicatedStorage`](https://create.roblox.com/docs/reference/engine/classes/ReplicatedStorage) and click on `Insert from file...`.

  4. Select the `Shime.rbxm` you downloaded from GitHub and click `Open`.

  5. Require the Shime module in your script like below when you want to use Shime.

    local Shime = require(game.ReplicatedStorage.Shime)

## Usage

The below code samples will show you how to use Shime and it's constructors, methods, and functions. To learn more about Shime, you can read the [Documentation](https://github.com/RyanLua/Shime/wiki/Documentation).

The examples below expect the `script.Parent` to be a [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject) and that you have the Shime module in [ReplicatedStorage](https://create.roblox.com/docs/reference/engine/classes/ReplicatedStorage), to learn about how to add the module to [ReplicatedStorage](https://create.roblox.com/docs/reference/engine/classes/ReplicatedStorage) go to **Installation > Download from GitHub & Install in Studio**. If you are using Shime from Roblox, you will need to change the `require` line to `local Shime = require(1234567890)` where `1234567890` is the ID of the Shime module.

### Creating a Shimmer

To create a Shimmer, you need to create a new `Shimmer` object. You can do this by calling the Shime module like a function. The below script will create a new Shimmer object and store it in a variable called `shimmer` and add it to the `script.Parent` then play it using [`Shimmer:Play()`](https://github.com/RyanLua/Shime/wiki/Documentation#play).

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

### Creating a Shimmer with a Custom Animation

Shime allows you to create a Shimmer with a custom animation using the [`Shimmer.new()`](https://github.com/RyanLua/Shime/wiki/Documentation#new) methods and specifying the parameters which are based closely off the [TweenBase](https://create.roblox.com/docs/reference/engine/classes/TweenBase) class. The below script will create a new Shimmer object and store it in a variable called `shimmer` and add it to the `script.Parent` then play it using [`Shimmer:Play()`](https://github.com/RyanLua/Shime/wiki/Documentation#play). The Shimmer will use a custom animation that will be played when the Shimmer is played.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    local time = 1 -- Time for shimmer animation
    local style = Enum.EasingStyle.Linear -- Easing style for shimmer animation
    local direction = Enum.EasingDirection.InOut -- Easing direction for easing style
    local repeatCount = -1 -- Repeat amount for shimmer (negative number means infinite)
    local reverse = false -- Reverse direction of shimmer when it reaches the end
    local delayTime = 0 -- Delay between each shimmer

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent, time, style, direction, repeatCount, reverse, delayTime)
    shimmer:Play()

### Pausing & Stopping a Shimmer

To pause a Shimmer, you need to call the [`Shimmer.Pause()`](https://github.com/RyanLua/Shime/wiki/Documentation#pause) function which can be paused again to toggle the playback state. The below script will create a new Shimmer object and store it in a variable called `shimmer` and add it to the `script.Parent` then play it. When the mouse enters the GuiObject the Shimmer will be paused using `Shimmer.Pause` and when the mouse leaves the GuiObject the Shimmer will be stopped.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Pause the Shimmer when the mouse enters the GuiObject
    script.Parent.MouseEnter:Connect(function()
        shimmer:Pause()
    end)

    -- Stop the Shimmer when the mouse leaves the GuiObject
    script.Parent.MouseButton1Click:Connect(function()
        shimmer:Stop()
    end)

### Reading Shimmer Properties

Shimmer has a few properties that you can use to get information about the Shimmer mostly related to the Shimmer's state. The below script will create a new Shimmer object and store it in a variable called `shimmer` and add it to the `script.Parent` then play it. Every 1 second the `shimmer` is paused then played again. The PlaybackState property is then printed to the output.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Loop shimmers play and pause every 1 second
    while true do
        task.wait(1)
        if shimmer.PlaybackState == Enum.PlaybackState.Playing then
            -- Pause the shimmer and print PlaybackState
            shimmer:Pause()
            print("shimmer.PlaybackState: " .. tostring(shimmer.PlaybackState))
        elseif shimmer.PlaybackState == Enum.PlaybackState.== Enum.PlaybackState.Playing then
            -- Play the shimmer and print PlaybackState
            shimmer:Play()
            print("shimmer.PlaybackState: " .. tostring(shimmer.PlaybackState))
        end
    end

### Creating a Shimmer with a Custom Frame and Gradient

Shimmer can be customized using the [`Shimmer.GetFrame()`](https://github.com/RyanLua/Shime/wiki/Documentation#getframe) and [`Shimmer.GetGradient()`](https://github.com/RyanLua/Shime/wiki/Documentation#getgradient) functions. The below script will create a new Shimmer object and store it in a variable called `shimmer` and add it to the `script.Parent` then play it. The Shimmer will use a custom frame and gradient.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Get the Shimmer's frame and set it's properties
    local frame = shimmer:GetFrame()
    frame.Size = UDim2.new(0.5, 0, 1, 0)
    frame.Position = UDim2.new(0, 0, 0, 0)
    frame.AnchorPoint = Vector2.new(0, 0)

    -- Get the Shimmer's gradient and set it's properties
    local gradient = shimmer:GetGradient()
    gradient.Rotation = 90
    gradient.Transparency = NumberSequence.new({
        NumberSequenceKeypoint.new(0, 0),
        NumberSequenceKeypoint.new(0.5, 0.5),
        NumberSequenceKeypoint.new(1, 0)
    })

# 🎉 Shime is officially released!

Shime has officially been released.

Shime development will be split between normal releases and long term support (LTS) releases. For those seeking stable builds with minor API changes or not worrying about having to update Shime as frequently you can choose the LTS release which will be specifically marked with LTS. For those seeking the lastest stable changes and occasional API changes you can select the normal release.

Shime has added new methods in it's first release from pre-release. These methods include `:GetFrame()` and `:GetGradient()` which will return their respective Instances. Seek documentation for more details.

# Shime Wiki

Shimmer is a class required from the Shime module that allows you to easily create a shimmer effect on any GuiObject based off of CoreGui's Shimmer module.

## [Home](https://github.com/RyanLua/Shime/wiki/Home)

  * [What is Shime?](https://github.com/RyanLua/Shime/wiki/Home#what-is-shime)
  * [Why use Shime?](https://github.com/RyanLua/Shime/wiki/Home#why-use-shime)
  * [How to use Shime?](https://github.com/RyanLua/Shime/wiki/Home#how-to-use-shime)

## [Getting Started](https://github.com/RyanLua/Shime/wiki/Getting-Started)

  * [Installation](https://github.com/RyanLua/Shime/wiki/Getting-Started#installation)
    * [Install from Roblox](https://github.com/RyanLua/Shime/wiki/Getting-Started#install-from-roblox)
    * [Install from GitHub](https://github.com/RyanLua/Shime/wiki/Getting-Started#install-from-github)
  * [Usage](https://github.com/RyanLua/Shime/wiki/Getting-Started#usage)
    * [Creating a Shimmer](https://github.com/RyanLua/Shime/wiki/Getting-Started#creating-a-shimmer)
    * [Creating a Shimmer with a Custom Animation](https://github.com/RyanLua/Shime/wiki/Getting-Started#creating-a-shimmer-with-a-custom-animation)
    * [Pausing & Stopping a Shimmer](https://github.com/RyanLua/Shime/wiki/Getting-Started#pausing--stopping-a-shimmer)
    * [Reading Shimmer Properties](https://github.com/RyanLua/Shime/wiki/Getting-Started#reading-shimmer-properties)
    * [Creating a Shimmer with a Custom Frame and Gradient](https://github.com/RyanLua/Shime/wiki/Getting-Started#creating-a-shimmer-with-a-custom-frame-and-gradient)

## [Documentation](https://github.com/RyanLua/Shime/wiki/Documentation)

  * [Summary](https://github.com/RyanLua/Shime/wiki/Documentation#summary)
    * [Constructors](https://github.com/RyanLua/Shime/wiki/Documentation#constructors)
    * [Properties](https://github.com/RyanLua/Shime/wiki/Documentation#properties)
    * [Methods](https://github.com/RyanLua/Shime/wiki/Documentation#methods)
  * [Constructors](https://github.com/RyanLua/Shime/wiki/Documentation#constructors-1)
    * [new](https://github.com/RyanLua/Shime/wiki/Documentation#new)
  * [Properties](https://github.com/RyanLua/Shime/wiki/Documentation#properties-1)
    * [PlaybackState](https://github.com/RyanLua/Shime/wiki/Documentation#playbackstate)
  * [Methods](https://github.com/RyanLua/Shime/wiki/Documentation#methods-1)
    * [GetFrame](https://github.com/RyanLua/Shime/wiki/Documentation#getframe)
    * [GetPlaybackState](https://github.com/RyanLua/Shime/wiki/Documentation#getplaybackstate)
    * [Stop](https://github.com/RyanLua/Shime/wiki/Documentation#stop)
    * [Pause](https://github.com/RyanLua/Shime/wiki/Documentation#pause)
    * [Play](https://github.com/RyanLua/Shime/wiki/Documentation#play)

### Clone this wiki locally


This repository was archived by the owner on Aug 20, 2024. It is now read-only.

[ ryanlua ](https://github.com/ryanlua) / ** [Shime](https://github.com/ryanlua/Shime) ** Public archive

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/ryanlua/Shime/wiki).

  * [ Notifications ](https://github.com/login?return_to=%2Fryanlua%2FShime) You must be signed in to change notification settings
  * [ Fork 1 ](https://github.com/login?return_to=%2Fryanlua%2FShime)
  * [ Star  29 ](https://github.com/login?return_to=%2Fryanlua%2FShime)

# Home

Jump to bottom

FloofyProtoBomb edited this page Mar 16, 2024 · [9 revisions](https://github.com/ryanlua/Shime/wiki/Home/_history)

Welcome to the Shime wiki! Shimmer is a class required from the Shime module that allows you to easily create a shimmer effect on any GuiObject just like how Roblox does.

## What is Shime and Shimmer?

**Shime** allows you to easily create a shimmer effect on any GuiObject on Roblox like the example below.

## Why should I use Shime?

Shime is lightweight and opened-sourced, so you can easily modify it to your liking. It also has familar methods such as `Shimmer:Play()` and `Shimmer:Pause()` to control the playback state of the Shimmer, based off the [TweenBase](https://create.roblox.com/docs/reference/engine/classes/TweenBase) class.

Shimmer from Roblox is locked to only CoreGui meaning that normal script can't access it. Shime allows you to create a Shimmer on any GuiObject from any script without needing Roblox Script Security privileges.

## How do I use Shime?

To use Shime, you can visit the [Getting Started](https://github.com/RyanLua/Shime/wiki/Getting-Started) page to learn how to install Shime. It contains a guide on how to install Shime from GitHub or Roblox and how to use Shime in your scripts. You can also visit the [Documentation](https://github.com/RyanLua/Shime/wiki/Documentation) page to learn more about the Shime and it's constructors, methods, and properties.

## Getting Started

You can get started by clicking the links in the sidebar.

# 🎉 Shime is officially released!

Shime has officially been released.

Shime development will be split between normal releases and long term support (LTS) releases. For those seeking stable builds with minor API changes or not worrying about having to update Shime as frequently you can choose the LTS release which will be specifically marked with LTS. For those seeking the lastest stable changes and occasional API changes you can select the normal release.

Shime has added new methods in it's first release from pre-release. These methods include `:GetFrame()` and `:GetGradient()` which will return their respective Instances. Seek documentation for more details.

# Shime Wiki

Shimmer is a class required from the Shime module that allows you to easily create a shimmer effect on any GuiObject based off of CoreGui's Shimmer module.

## [Home](https://github.com/ryanlua/Shime/wiki/Home)

  * [What is Shime?](https://github.com/ryanlua/Shime/wiki/Home#what-is-shime)
  * [Why use Shime?](https://github.com/ryanlua/Shime/wiki/Home#why-use-shime)
  * [How to use Shime?](https://github.com/ryanlua/Shime/wiki/Home#how-to-use-shime)

## [Getting Started](https://github.com/ryanlua/Shime/wiki/Getting-Started)

  * [Installation](https://github.com/ryanlua/Shime/wiki/Getting-Started#installation)
    * [Install from Roblox](https://github.com/ryanlua/Shime/wiki/Getting-Started#install-from-roblox)
    * [Install from GitHub](https://github.com/ryanlua/Shime/wiki/Getting-Started#install-from-github)
  * [Usage](https://github.com/ryanlua/Shime/wiki/Getting-Started#usage)
    * [Creating a Shimmer](https://github.com/ryanlua/Shime/wiki/Getting-Started#creating-a-shimmer)
    * [Creating a Shimmer with a Custom Animation](https://github.com/ryanlua/Shime/wiki/Getting-Started#creating-a-shimmer-with-a-custom-animation)
    * [Pausing & Stopping a Shimmer](https://github.com/ryanlua/Shime/wiki/Getting-Started#pausing--stopping-a-shimmer)
    * [Reading Shimmer Properties](https://github.com/ryanlua/Shime/wiki/Getting-Started#reading-shimmer-properties)
    * [Creating a Shimmer with a Custom Frame and Gradient](https://github.com/ryanlua/Shime/wiki/Getting-Started#creating-a-shimmer-with-a-custom-frame-and-gradient)

## [Documentation](https://github.com/ryanlua/Shime/wiki/Documentation)

  * [Summary](https://github.com/ryanlua/Shime/wiki/Documentation#summary)
    * [Constructors](https://github.com/ryanlua/Shime/wiki/Documentation#constructors)
    * [Properties](https://github.com/ryanlua/Shime/wiki/Documentation#properties)
    * [Methods](https://github.com/ryanlua/Shime/wiki/Documentation#methods)
  * [Constructors](https://github.com/ryanlua/Shime/wiki/Documentation#constructors-1)
    * [new](https://github.com/ryanlua/Shime/wiki/Documentation#new)
  * [Properties](https://github.com/ryanlua/Shime/wiki/Documentation#properties-1)
    * [PlaybackState](https://github.com/ryanlua/Shime/wiki/Documentation#playbackstate)
  * [Methods](https://github.com/ryanlua/Shime/wiki/Documentation#methods-1)
    * [GetFrame](https://github.com/ryanlua/Shime/wiki/Documentation#getframe)
    * [GetPlaybackState](https://github.com/ryanlua/Shime/wiki/Documentation#getplaybackstate)
    * [Stop](https://github.com/ryanlua/Shime/wiki/Documentation#stop)
    * [Pause](https://github.com/ryanlua/Shime/wiki/Documentation#pause)
    * [Play](https://github.com/ryanlua/Shime/wiki/Documentation#play)

### Clone this wiki locally


This repository was archived by the owner on Aug 20, 2024. It is now read-only.

[ ryanlua ](https://github.com/ryanlua) / ** [Shime](https://github.com/ryanlua/Shime) ** Public archive

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/ryanlua/Shime/wiki/Getting-Started).

  * [ Notifications ](https://github.com/login?return_to=%2Fryanlua%2FShime) You must be signed in to change notification settings
  * [ Fork 1 ](https://github.com/login?return_to=%2Fryanlua%2FShime)
  * [ Star  29 ](https://github.com/login?return_to=%2Fryanlua%2FShime)

# Getting Started

Jump to bottom

Ryan Luu edited this page Dec 21, 2023 · [5 revisions](https://github.com/ryanlua/Shime/wiki/Getting-Started/_history)

This page will cover installation and basic usage including code samples of Shime. For more information about Shime, you can read the [Documentation](https://github.com/ryanlua/Shime/wiki/Documentation).

## Installation

Shime is simple and straightforward, you will need the require Shime's module script as a variable and then you can use constructors such as [`Shime.new()`](https://github.com/ryanlua/Shime/wiki/Documentation#new) to create a new Shimmer object. Below are two methods to install Shime.

### Install from Roblox

> **Warning** This installation method will **not allow for automatic updates** including **security updates**. It is recommended to use the Require from Roblox method. Only use this method if you are planning to **use a modified version of Shime**.

  1. Get the Shime module from the [Creator Marketplace](https://create.roblox.com/marketplace/asset/12959615382).

  2. Open Roblox Studio and create a new place or open an existing place.

  3. Open or locate the [Toolbox](https://create.roblox.com/docs/studio/toolbox).

  4. Open your [Inventory](https://create.roblox.com/docs/studio/toolbox#inventory) from the [Toolbox](https://create.roblox.com/docs/studio/toolbox).

  5. Search for `Shimmer Module` created by `WinnersTakesAll` and click on it.

  6. Insert `Shimmer Module` into the [Explorer](https://create.roblox.com/docs/studio/explorer) and drag into [ReplicatedStorage](https://create.roblox.com/docs/reference/engine/classes/ReplicatedStorage).

### Install from GitHub

> **Warning** This installation method will not allow for automatic updates including security updates. It is recommended to use the Require from Roblox method. Only use this method if you are planning to use a modified version of Shime.

You can install Shime from GitHub, this is intended if you want to use a modified version of Shime.

  1. Download the `Shime.rbxm` file from [Releases](https://github.com/RyanLua/Shime/releases).

  2. Open Roblox Studio and create a new place or open an existing place.

  3. Go to the [Explorer](https://create.roblox.com/docs/studio/explorer) and right click on [`ReplicatedStorage`](https://create.roblox.com/docs/reference/engine/classes/ReplicatedStorage) and click on `Insert from file...`.

  4. Select the `Shime.rbxm` you downloaded from GitHub and click `Open`.

  5. Require the Shime module in your script like below when you want to use Shime.

    local Shime = require(game.ReplicatedStorage.Shime)

## Usage

The below code samples will show you how to use Shime and it's constructors, methods, and functions. To learn more about Shime, you can read the [Documentation](https://github.com/ryanlua/Shime/wiki/Documentation).

The examples below expect the `script.Parent` to be a [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject) and that you have the Shime module in [ReplicatedStorage](https://create.roblox.com/docs/reference/engine/classes/ReplicatedStorage), to learn about how to add the module to [ReplicatedStorage](https://create.roblox.com/docs/reference/engine/classes/ReplicatedStorage) go to **Installation > Download from GitHub & Install in Studio**. If you are using Shime from Roblox, you will need to change the `require` line to `local Shime = require(1234567890)` where `1234567890` is the ID of the Shime module.

### Creating a Shimmer

To create a Shimmer, you need to create a new `Shimmer` object. You can do this by calling the Shime module like a function. The below script will create a new Shimmer object and store it in a variable called `shimmer` and add it to the `script.Parent` then play it using [`Shimmer:Play()`](https://github.com/ryanlua/Shime/wiki/Documentation#play).

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

### Creating a Shimmer with a Custom Animation

Shime allows you to create a Shimmer with a custom animation using the [`Shimmer.new()`](https://github.com/ryanlua/Shime/wiki/Documentation#new) methods and specifying the parameters which are based closely off the [TweenBase](https://create.roblox.com/docs/reference/engine/classes/TweenBase) class. The below script will create a new Shimmer object and store it in a variable called `shimmer` and add it to the `script.Parent` then play it using [`Shimmer:Play()`](https://github.com/ryanlua/Shime/wiki/Documentation#play). The Shimmer will use a custom animation that will be played when the Shimmer is played.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    local time = 1 -- Time for shimmer animation
    local style = Enum.EasingStyle.Linear -- Easing style for shimmer animation
    local direction = Enum.EasingDirection.InOut -- Easing direction for easing style
    local repeatCount = -1 -- Repeat amount for shimmer (negative number means infinite)
    local reverse = false -- Reverse direction of shimmer when it reaches the end
    local delayTime = 0 -- Delay between each shimmer

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent, time, style, direction, repeatCount, reverse, delayTime)
    shimmer:Play()

### Pausing & Stopping a Shimmer

To pause a Shimmer, you need to call the [`Shimmer.Pause()`](https://github.com/ryanlua/Shime/wiki/Documentation#pause) function which can be paused again to toggle the playback state. The below script will create a new Shimmer object and store it in a variable called `shimmer` and add it to the `script.Parent` then play it. When the mouse enters the GuiObject the Shimmer will be paused using `Shimmer.Pause` and when the mouse leaves the GuiObject the Shimmer will be stopped.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Pause the Shimmer when the mouse enters the GuiObject
    script.Parent.MouseEnter:Connect(function()
        shimmer:Pause()
    end)

    -- Stop the Shimmer when the mouse leaves the GuiObject
    script.Parent.MouseButton1Click:Connect(function()
        shimmer:Stop()
    end)

### Reading Shimmer Properties

Shimmer has a few properties that you can use to get information about the Shimmer mostly related to the Shimmer's state. The below script will create a new Shimmer object and store it in a variable called `shimmer` and add it to the `script.Parent` then play it. Every 1 second the `shimmer` is paused then played again. The PlaybackState property is then printed to the output.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Loop shimmers play and pause every 1 second
    while true do
        task.wait(1)
        if shimmer.PlaybackState == Enum.PlaybackState.Playing then
            -- Pause the shimmer and print PlaybackState
            shimmer:Pause()
            print("shimmer.PlaybackState: " .. tostring(shimmer.PlaybackState))
        elseif shimmer.PlaybackState == Enum.PlaybackState.== Enum.PlaybackState.Playing then
            -- Play the shimmer and print PlaybackState
            shimmer:Play()
            print("shimmer.PlaybackState: " .. tostring(shimmer.PlaybackState))
        end
    end

### Creating a Shimmer with a Custom Frame and Gradient

Shimmer can be customized using the [`Shimmer.GetFrame()`](https://github.com/ryanlua/Shime/wiki/Documentation#getframe) and [`Shimmer.GetGradient()`](https://github.com/ryanlua/Shime/wiki/Documentation#getgradient) functions. The below script will create a new Shimmer object and store it in a variable called `shimmer` and add it to the `script.Parent` then play it. The Shimmer will use a custom frame and gradient.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Get the Shimmer's frame and set it's properties
    local frame = shimmer:GetFrame()
    frame.Size = UDim2.new(0.5, 0, 1, 0)
    frame.Position = UDim2.new(0, 0, 0, 0)
    frame.AnchorPoint = Vector2.new(0, 0)

    -- Get the Shimmer's gradient and set it's properties
    local gradient = shimmer:GetGradient()
    gradient.Rotation = 90
    gradient.Transparency = NumberSequence.new({
        NumberSequenceKeypoint.new(0, 0),
        NumberSequenceKeypoint.new(0.5, 0.5),
        NumberSequenceKeypoint.new(1, 0)
    })

# 🎉 Shime is officially released!

Shime has officially been released.

Shime development will be split between normal releases and long term support (LTS) releases. For those seeking stable builds with minor API changes or not worrying about having to update Shime as frequently you can choose the LTS release which will be specifically marked with LTS. For those seeking the lastest stable changes and occasional API changes you can select the normal release.

Shime has added new methods in it's first release from pre-release. These methods include `:GetFrame()` and `:GetGradient()` which will return their respective Instances. Seek documentation for more details.

# Shime Wiki

Shimmer is a class required from the Shime module that allows you to easily create a shimmer effect on any GuiObject based off of CoreGui's Shimmer module.

## [Home](https://github.com/ryanlua/Shime/wiki/Home)

  * [What is Shime?](https://github.com/ryanlua/Shime/wiki/Home#what-is-shime)
  * [Why use Shime?](https://github.com/ryanlua/Shime/wiki/Home#why-use-shime)
  * [How to use Shime?](https://github.com/ryanlua/Shime/wiki/Home#how-to-use-shime)

## [Getting Started](https://github.com/ryanlua/Shime/wiki/Getting-Started)

  * [Installation](https://github.com/ryanlua/Shime/wiki/Getting-Started#installation)
    * [Install from Roblox](https://github.com/ryanlua/Shime/wiki/Getting-Started#install-from-roblox)
    * [Install from GitHub](https://github.com/ryanlua/Shime/wiki/Getting-Started#install-from-github)
  * [Usage](https://github.com/ryanlua/Shime/wiki/Getting-Started#usage)
    * [Creating a Shimmer](https://github.com/ryanlua/Shime/wiki/Getting-Started#creating-a-shimmer)
    * [Creating a Shimmer with a Custom Animation](https://github.com/ryanlua/Shime/wiki/Getting-Started#creating-a-shimmer-with-a-custom-animation)
    * [Pausing & Stopping a Shimmer](https://github.com/ryanlua/Shime/wiki/Getting-Started#pausing--stopping-a-shimmer)
    * [Reading Shimmer Properties](https://github.com/ryanlua/Shime/wiki/Getting-Started#reading-shimmer-properties)
    * [Creating a Shimmer with a Custom Frame and Gradient](https://github.com/ryanlua/Shime/wiki/Getting-Started#creating-a-shimmer-with-a-custom-frame-and-gradient)

## [Documentation](https://github.com/ryanlua/Shime/wiki/Documentation)

  * [Summary](https://github.com/ryanlua/Shime/wiki/Documentation#summary)
    * [Constructors](https://github.com/ryanlua/Shime/wiki/Documentation#constructors)
    * [Properties](https://github.com/ryanlua/Shime/wiki/Documentation#properties)
    * [Methods](https://github.com/ryanlua/Shime/wiki/Documentation#methods)
  * [Constructors](https://github.com/ryanlua/Shime/wiki/Documentation#constructors-1)
    * [new](https://github.com/ryanlua/Shime/wiki/Documentation#new)
  * [Properties](https://github.com/ryanlua/Shime/wiki/Documentation#properties-1)
    * [PlaybackState](https://github.com/ryanlua/Shime/wiki/Documentation#playbackstate)
  * [Methods](https://github.com/ryanlua/Shime/wiki/Documentation#methods-1)
    * [GetFrame](https://github.com/ryanlua/Shime/wiki/Documentation#getframe)
    * [GetPlaybackState](https://github.com/ryanlua/Shime/wiki/Documentation#getplaybackstate)
    * [Stop](https://github.com/ryanlua/Shime/wiki/Documentation#stop)
    * [Pause](https://github.com/ryanlua/Shime/wiki/Documentation#pause)
    * [Play](https://github.com/ryanlua/Shime/wiki/Documentation#play)

### Clone this wiki locally


This repository was archived by the owner on Aug 20, 2024. It is now read-only.

[ ryanlua ](https://github.com/ryanlua) / ** [Shime](https://github.com/ryanlua/Shime) ** Public archive

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/ryanlua/Shime/wiki/Documentation).

  * [ Notifications ](https://github.com/login?return_to=%2Fryanlua%2FShime) You must be signed in to change notification settings
  * [ Fork 1 ](https://github.com/login?return_to=%2Fryanlua%2FShime)
  * [ Star  29 ](https://github.com/login?return_to=%2Fryanlua%2FShime)

# Documentation

Jump to bottom

Ryan edited this page Apr 8, 2023 · [10 revisions](https://github.com/ryanlua/Shime/wiki/Documentation/_history)

Documentation for the Shime module. Shime is a class that allows you to create a shimmer effect on any GuiObject on Roblox. Based off of Roblox's Shimmer module from CoreGui.

## Summary

### Constructors

new(parent: [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject))
Returns a [`table`](https://create.roblox.com/docs/reference/engine/libraries/table) containing `Shimmer`'s metatable. Shimmers using default parameters.
new(parent: [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject), time: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)?, style: [`EasingStyle`](https://create.roblox.com/docs/reference/engine/enums/EasingStyle)?, direction: [`EasingDirection`](https://create.roblox.com/docs/reference/engine/enums/EasingDirection)?, repeatCount: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)?, reverses: [`boolean`](https://create.roblox.com/docs/scripting/luau/booleans)?, delayTime: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)?)
Returns a [`table`](https://create.roblox.com/docs/reference/engine/libraries/table) containing `Shimmer`'s metatable. Shimmers using specified parameters.

### Properties

Property | Details
PlaybackState: [`Enum.PlaybackState`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState) | This read-only property will return [`Enum.PlaybackState`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState).

### Methods

GetFrame(): [`Frame`](https://create.roblox.com/docs/reference/engine/classes/Frame)
The GetFrame function returns the [`Frame`](https://create.roblox.com/docs/reference/engine/classes/Frame) that is used to create the shimmer effect. This frame can be customized after the shimmer is created.
GetGradient(): [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient)
The GetGradient function returns the [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient) that is used to create the shimmer effect. This gradient can be customized after the shimmer is created.
Stop(): `void`
The Stop function halts `Shimmer`. If `Shimmer:Play()` is called again the `Shimmer` will resume interpolating towards their destination but take the full length of the time to do so.
Pause(): `void`
The Pause function halts `Shimmer`. If you call `Shimmer:Play()` again, the shimmer resumes playback from the moment it was paused.
Play(): `void`
The Play function starts `Shimmer`. Note that if a shimmer has already begun calling Play will have no effect unless the shimmer has finished or has been stopped (either by `Shimmer:Stop()` or `Shimmer:Pause()`).

## Constructors

### new

Creates a new `Shimmer` from the provided parameters.

#### Parameters

Parameter | Details
parent: [`GuiObject`](https://create.roblox.com/docs/reference/engine/classes/GuiObject) |
time: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)? | Default Value: "1"
style: [`EasingStyle`](https://create.roblox.com/docs/reference/engine/enums/EasingStyle)? | Default Value: "EasingStyle.Linear"
direction: [`EasingDirection`](https://create.roblox.com/docs/reference/engine/enums/EasingDirection)? | Default Value: "EasingDirection.In"
repeatCount: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)? | Default Value: "-1"
reverses: [`boolean`](https://create.roblox.com/docs/scripting/luau/booleans)? | Default Value: "false"
delay: [`number`](https://create.roblox.com/docs/scripting/luau/numbers)? | Default Value: "0"

## Properties

### PlaybackState

This read-only property will return [`Enum.PlaybackState`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState).

This property is updated when the playback of the Shimmer is updated. This can be caused by a method changing the Shimmer, the Shimmer finishing, etc.

As PlaybackState is read only it can not be used to change the playback of the Shimmer.

#### Code Samples

This code sample contains demonstrates when the Shimmer.PlaybackState property is updated and how to utilize it.

A shimmer is created and played. Every 1 second the shimmer is paused then played again. The PlaybackState property is then printed to the output.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Loop shimmers play and pause every 1 second
    while true do
        task.wait(1)
        if shimmer.PlaybackState == Enum.PlaybackState.Playing then
            -- Pause the shimmer and print PlaybackState
            shimmer:Pause()
            print("shimmer.PlaybackState: " .. tostring(shimmer.PlaybackState))
        elseif shimmer.PlaybackState == Enum.PlaybackState.== Enum.PlaybackState.Playing then
            -- Play the shimmer and print PlaybackState
            shimmer:Play()
            print("shimmer.PlaybackState: " .. tostring(shimmer.PlaybackState))
        end
    end

## Methods

### GetFrame

The GetFrame function returns the [`Frame`](https://create.roblox.com/docs/reference/engine/classes/Frame) that is used to create the shimmer effect. This frame can be customized after the shimmer is created.

#### Returns

    Frame

#### Code Samples

This code sample contains demonstrates how to customize the [`Frame`](https://create.roblox.com/docs/reference/engine/classes/Frame) that is used to create the shimmer effect.

A shimmer is created and played. The [`Frame`](https://create.roblox.com/docs/reference/engine/classes/Frame) that is used to create the shimmer effect is then customized.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Customize the Frame that creates the shimmer effect
    local shimmerFrame = shimmer:GetFrame()
    shimmerFrame.BackgroundTransparency = 0.5

### GetGradient

The GetGradient function returns the [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient) that is used to create the shimmer effect. This gradient can be customized after the shimmer is created.

#### Returns

    UIGradient

#### Code Samples

This code sample contains demonstrates how to customize the [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient) that is used to create the shimmer effect.

A shimmer is created and played. The [`UIGradient`](https://create.roblox.com/docs/reference/engine/classes/UIGradient) that is used to create the shimmer effect is then customized.

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Customize the UIGradient that creates the shimmer effect
    local shimmerGradient = shimmer:GetGradient()
    shimmerGradient.Rotation = 90

### Stop

Stops the `Shimmer`. Sets `Shimmer.PlaybackState` to [`Enum.PlaybackState.Cancelled`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState).

#### Returns

    void

#### Code Samples

This sample gives a simple demonstration of what each of the Shimmer functions (Shimmer.Play, Shimmer.Stop and Shimmer.Pause).

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Pause the Shimmer when the mouse enters the GuiObject
    script.Parent.MouseEnter:Connect(function()
        shimmer:Pause()
    end)

    -- Stop the Shimmer when the mouse leaves the GuiObject
    script.Parent.MouseButton1Click:Connect(function()
        shimmer:Stop()
    end)

### Pause

Pauses the `Shimmer`. Sets `Shimmer.PlaybackState` to [`Enum.PlaybackState.Paused`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState).

#### Returns

    void

#### Code Samples

This sample gives a simple demonstration of what each of the Shimmer functions (Shimmer.Play, Shimmer.Stop and Shimmer.Pause).

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Pause the Shimmer when the mouse enters the GuiObject
    script.Parent.MouseEnter:Connect(function()
        shimmer:Pause()
    end)

    -- Stop the Shimmer when the mouse leaves the GuiObject
    script.Parent.MouseButton1Click:Connect(function()
        shimmer:Stop()
    end)

### Play

Plays the `Shimmer`. Sets `Shimmer.PlaybackState` to [`Enum.PlaybackState.Playing`](https://create.roblox.com/docs/reference/engine/enums/PlaybackState).

#### Returns

    void

#### Code Samples

This sample gives a simple demonstration of what each of the Shimmer functions (Shimmer.Play, Shimmer.Stop and Shimmer.Pause).

    -- Require the Shime module
    local Shime = require(game.ReplicatedStorage.Shime)

    -- Create a new Shimmer and play it
    local shimmer = Shime.new(script.Parent)
    shimmer:Play()

    -- Pause the Shimmer when the mouse enters the GuiObject
    script.Parent.MouseEnter:Connect(function()
        shimmer:Pause()
    end)

    -- Stop the Shimmer when the mouse leaves the GuiObject
    script.Parent.MouseButton1Click:Connect(function()
        shimmer:Stop()
    end)

# 🎉 Shime is officially released!

Shime has officially been released.

Shime development will be split between normal releases and long term support (LTS) releases. For those seeking stable builds with minor API changes or not worrying about having to update Shime as frequently you can choose the LTS release which will be specifically marked with LTS. For those seeking the lastest stable changes and occasional API changes you can select the normal release.

Shime has added new methods in it's first release from pre-release. These methods include `:GetFrame()` and `:GetGradient()` which will return their respective Instances. Seek documentation for more details.

# Shime Wiki

Shimmer is a class required from the Shime module that allows you to easily create a shimmer effect on any GuiObject based off of CoreGui's Shimmer module.

## [Home](https://github.com/ryanlua/Shime/wiki/Home)

  * [What is Shime?](https://github.com/ryanlua/Shime/wiki/Home#what-is-shime)
  * [Why use Shime?](https://github.com/ryanlua/Shime/wiki/Home#why-use-shime)
  * [How to use Shime?](https://github.com/ryanlua/Shime/wiki/Home#how-to-use-shime)

## [Getting Started](https://github.com/ryanlua/Shime/wiki/Getting-Started)

  * [Installation](https://github.com/ryanlua/Shime/wiki/Getting-Started#installation)
    * [Install from Roblox](https://github.com/ryanlua/Shime/wiki/Getting-Started#install-from-roblox)
    * [Install from GitHub](https://github.com/ryanlua/Shime/wiki/Getting-Started#install-from-github)
  * [Usage](https://github.com/ryanlua/Shime/wiki/Getting-Started#usage)
    * [Creating a Shimmer](https://github.com/ryanlua/Shime/wiki/Getting-Started#creating-a-shimmer)
    * [Creating a Shimmer with a Custom Animation](https://github.com/ryanlua/Shime/wiki/Getting-Started#creating-a-shimmer-with-a-custom-animation)
    * [Pausing & Stopping a Shimmer](https://github.com/ryanlua/Shime/wiki/Getting-Started#pausing--stopping-a-shimmer)
    * [Reading Shimmer Properties](https://github.com/ryanlua/Shime/wiki/Getting-Started#reading-shimmer-properties)
    * [Creating a Shimmer with a Custom Frame and Gradient](https://github.com/ryanlua/Shime/wiki/Getting-Started#creating-a-shimmer-with-a-custom-frame-and-gradient)

## [Documentation](https://github.com/ryanlua/Shime/wiki/Documentation)

  * [Summary](https://github.com/ryanlua/Shime/wiki/Documentation#summary)
    * [Constructors](https://github.com/ryanlua/Shime/wiki/Documentation#constructors)
    * [Properties](https://github.com/ryanlua/Shime/wiki/Documentation#properties)
    * [Methods](https://github.com/ryanlua/Shime/wiki/Documentation#methods)
  * [Constructors](https://github.com/ryanlua/Shime/wiki/Documentation#constructors-1)
    * [new](https://github.com/ryanlua/Shime/wiki/Documentation#new)
  * [Properties](https://github.com/ryanlua/Shime/wiki/Documentation#properties-1)
    * [PlaybackState](https://github.com/ryanlua/Shime/wiki/Documentation#playbackstate)
  * [Methods](https://github.com/ryanlua/Shime/wiki/Documentation#methods-1)
    * [GetFrame](https://github.com/ryanlua/Shime/wiki/Documentation#getframe)
    * [GetPlaybackState](https://github.com/ryanlua/Shime/wiki/Documentation#getplaybackstate)
    * [Stop](https://github.com/ryanlua/Shime/wiki/Documentation#stop)
    * [Pause](https://github.com/ryanlua/Shime/wiki/Documentation#pause)
    * [Play](https://github.com/ryanlua/Shime/wiki/Documentation#play)

### Clone this wiki locally


This repository was archived by the owner on Aug 20, 2024. It is now read-only.

[ ryanlua ](https://github.com/ryanlua) / ** [Shime](https://github.com/ryanlua/Shime) ** Public archive

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/ryanlua/Shime/wiki/Documentation/_history).

  * [ Notifications ](https://github.com/login?return_to=%2Fryanlua%2FShime) You must be signed in to change notification settings
  * [ Fork 1 ](https://github.com/login?return_to=%2Fryanlua%2FShime)
  * [ Star  29 ](https://github.com/login?return_to=%2Fryanlua%2FShime)

# [History](https://github.com/ryanlua/Shime/wiki/_history) / Documentation

## Revisions

Compare revisions

  * Updated Documentation (markdown)

[ ryanlua ](https://github.com/ryanlua) committed Apr 8, 2023

[d711c08](https://github.com/ryanlua/Shime/wiki/Documentation/d711c08789ddcf23c689281dcd20992d129cb152)

  * Add new methods

[ ryanlua ](https://github.com/ryanlua) committed Apr 7, 2023

[e31f711](https://github.com/ryanlua/Shime/wiki/Documentation/e31f7111c01dcdb3e00d62b72018e46b6104896b)

  * Add new methods

[ ryanlua ](https://github.com/ryanlua) committed Apr 7, 2023

[021f812](https://github.com/ryanlua/Shime/wiki/Documentation/021f812224eb530131b459e128a4b209e6384bb8)

  * Updated code samples

[ ryanlua ](https://github.com/ryanlua) committed Apr 1, 2023

[be97d66](https://github.com/ryanlua/Shime/wiki/Documentation/be97d661d6f1cc28c4b9b86d372200645d49c184)

  * Change parameter name for constructor

[ ryanlua ](https://github.com/ryanlua) committed Mar 27, 2023

[a4fc972](https://github.com/ryanlua/Shime/wiki/Documentation/a4fc972d42a30fe97770f61662dd4144a91977c0)

  * Update parameters.

[ ryanlua ](https://github.com/ryanlua) committed Mar 24, 2023

[b74bb71](https://github.com/ryanlua/Shime/wiki/Documentation/b74bb715f0bddc547ef960e5c7bb6d7b59bf9544)

  * Removed duplicate header

[ ryanlua ](https://github.com/ryanlua) committed Mar 24, 2023

[853949e](https://github.com/ryanlua/Shime/wiki/Documentation/853949e4a1dd4c23f5a8e02b29d215e74080534a)

  * Changes to format and fixed headers

[ ryanlua ](https://github.com/ryanlua) committed Mar 24, 2023

[2542d6f](https://github.com/ryanlua/Shime/wiki/Documentation/2542d6f8fef985b89f908f76d10ab217b072a837)

  * Updated Documentation (markdown)

[ ryanlua ](https://github.com/ryanlua) committed Mar 23, 2023

[8e669e6](https://github.com/ryanlua/Shime/wiki/Documentation/8e669e6f050b4ff5ba0a2d9ab5f9f93797d98a4d)

  * Created Documentation (markdown)

[ ryanlua ](https://github.com/ryanlua) committed Mar 23, 2023

[42a4239](https://github.com/ryanlua/Shime/wiki/Documentation/42a4239b50f6490e7458761dfb74588c8bd61af8)


This repository was archived by the owner on Aug 20, 2024. It is now read-only.

[ ryanlua ](https://github.com/ryanlua) / ** [Shime](https://github.com/ryanlua/Shime) ** Public archive

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/ryanlua/Shime/wiki/Home/_history).

  * [ Notifications ](https://github.com/login?return_to=%2Fryanlua%2FShime) You must be signed in to change notification settings
  * [ Fork 1 ](https://github.com/login?return_to=%2Fryanlua%2FShime)
  * [ Star  29 ](https://github.com/login?return_to=%2Fryanlua%2FShime)

# [History](https://github.com/ryanlua/Shime/wiki/_history) / Home

## Revisions

Compare revisions

  * Replaced Usage with Getting Started.

[ FloofyProtoBomb ](https://github.com/FloofyProtoBomb) committed Mar 16, 2024

[8b54c51](https://github.com/ryanlua/Shime/wiki/Home/8b54c512d73aec766a2aa1995b7f870f5e2d7c43)

  * Fix broken links.

[ FloofyProtoBomb ](https://github.com/FloofyProtoBomb) committed Mar 16, 2024

[6b5e24d](https://github.com/ryanlua/Shime/wiki/Home/6b5e24dee25683caafc2fc763821747854d99004)

  * Updated Home (markdown)

[ ryanlua ](https://github.com/ryanlua) committed May 21, 2023

[e26e9e1](https://github.com/ryanlua/Shime/wiki/Home/e26e9e1357dba07dad806d7d1a5b095451071045)

  * Updated Home (markdown)

[ ryanlua ](https://github.com/ryanlua) committed May 6, 2023

[5e523c2](https://github.com/ryanlua/Shime/wiki/Home/5e523c286b41e05a4ab2cc06a612a8b6245421e1)

  * Updated Home (markdown)

[ ryanlua ](https://github.com/ryanlua) committed Apr 2, 2023

[410eb31](https://github.com/ryanlua/Shime/wiki/Home/410eb314e84301f4e5dc9978fbe731adac836120)

  * Add images

[ ryanlua ](https://github.com/ryanlua) committed Apr 1, 2023

[3deb1d3](https://github.com/ryanlua/Shime/wiki/Home/3deb1d3bf9b50e1966c1dfa5a0c4067f31d32c48)

  * Updated to add Shime home

[ ryanlua ](https://github.com/ryanlua) committed Mar 27, 2023

[4d5bbf9](https://github.com/ryanlua/Shime/wiki/Home/4d5bbf91b0ea15851f485950a96e177fae3e21ad)

  * Updated Home (markdown)

[ ryanlua ](https://github.com/ryanlua) committed Mar 23, 2023

[b297e04](https://github.com/ryanlua/Shime/wiki/Home/b297e047be4ebe35660f799f86f5e29f9b2bb19b)

  * Initial Home page

[ ryanlua ](https://github.com/ryanlua) committed Mar 21, 2023

[5097136](https://github.com/ryanlua/Shime/wiki/Home/50971363d1e66e340af7037822d7cdd4422aa17a)


This repository was archived by the owner on Aug 20, 2024. It is now read-only.

[ ryanlua ](https://github.com/ryanlua) / ** [Shime](https://github.com/ryanlua/Shime) ** Public archive

  * ### Uh oh!

There was an error while loading. [Please reload this page](https://github.com/ryanlua/Shime/wiki/Getting-Started/_history).

  * [ Notifications ](https://github.com/login?return_to=%2Fryanlua%2FShime) You must be signed in to change notification settings
  * [ Fork 1 ](https://github.com/login?return_to=%2Fryanlua%2FShime)
  * [ Star  29 ](https://github.com/login?return_to=%2Fryanlua%2FShime)

# [History](https://github.com/ryanlua/Shime/wiki/_history) / Getting Started

## Revisions

Compare revisions

  * Fix link

[ ryanlua ](https://github.com/ryanlua) committed Dec 21, 2023

[550c5f1](https://github.com/ryanlua/Shime/wiki/Getting-Started/550c5f1c775ed6dbf0fd39c2e0440abcec81ec8a)

  * Add new methods and property

[ ryanlua ](https://github.com/ryanlua) committed Apr 7, 2023

[6d583db](https://github.com/ryanlua/Shime/wiki/Getting-Started/6d583db6f9bd79454fdde56fff7d02462d87e47f)

  * Update installation

[ ryanlua ](https://github.com/ryanlua) committed Apr 4, 2023

[00db334](https://github.com/ryanlua/Shime/wiki/Getting-Started/00db334adfcd12d190f840026b0a534f7e6ff89e)

  * Added images

[ ryanlua ](https://github.com/ryanlua) committed Apr 1, 2023

[b9e26a0](https://github.com/ryanlua/Shime/wiki/Getting-Started/b9e26a0ece4c440f1036118beb758f196fc608ea)

  * Updated Usage (markdown)

[ ryanlua ](https://github.com/ryanlua) committed Mar 29, 2023

[da413b6](https://github.com/ryanlua/Shime/wiki/Getting-Started/da413b668c346981a9e5d00f5ed4dce4b8f8cb54)