Skip to main content

ModelAnimationPlayer

Animates a Model

Update signals firing order

  • onPreUpdated
  • onCanUpdateModelChanged
  • onModelPreUpdated
  • animationModel.onUpdated
    • Fired through calling AnimationModel:update() or through AnimationModel:setInDefaultPosition() which calls AnimationModel:update()
  • onModelUpdated
  • onPreBoundUpdated
  • onUpdated

Properties

maid

ModelAnimationPlayer.maid: Maid

animationPlayer

ModelAnimationPlayer.animationPlayer: AnimationPlayer

animationModel

ModelAnimationPlayer.animationModel: AnimationModel

getTrack

ModelAnimationPlayer.getTrack: (trackNamestring) → CFrameTrack

onPlaying

Signal
ModelAnimationPlayer.onPlaying: Signal

Fires when the current state changes to AnimationState.Playing. Only fires when update() is called.

onPaused

Signal
ModelAnimationPlayer.onPaused: Signal

Fires when the current state changes to AnimationState.Paused. Only fires when update() is called.

onStopped

Signal
ModelAnimationPlayer.onStopped: Signal

Fires when the current state changes to AnimationState.Stopped. Only fires when update() is called.

onStateChanged

Signal
ModelAnimationPlayer.onStateChanged: Signal

Fires when the current state changes from the last update. Only fires when update() is called. See TimeUpdater.AnimationState

onAnimationLengthReached

Signal
ModelAnimationPlayer.onAnimationLengthReached: Signal

Fires when the animation player current time reaches the current animation's length and isLooped is false.

onAnimationChanged

Signal
ModelAnimationPlayer.onAnimationChanged: Signal

Fires when the current animation value changes from the last update. Only fires when update() is called.

onLooped

Signal
ModelAnimationPlayer.onLooped: Signal

Fires when the current animation loops: the current time reaches the current animation's length while isLooped is true. Only fires when update() is called.

onPreUpdated

Signal
ModelAnimationPlayer.onPreUpdated: Signal<(steppednumber) → ()>

Fires before current time, state, and model is updated.

onTimeUpdated

Signal
ModelAnimationPlayer.onTimeUpdated: Signal<(steppednumber) → ()>

Fires after current time and state are updated, but before model is updated.

onPreBoundUpdated

Signal
ModelAnimationPlayer.onPreBoundUpdated: Signal<(steppednumber) → ()>

Fires before AnimationPlayers bound to this with :bindToAnimationPlayer() are updated.

onUpdated

Signal
ModelAnimationPlayer.onUpdated: Signal<(steppednumber) → ()>

Fires last after current time and state, AnimationModel, and bound AnimationPlayers are updated.

onCanUpdateModelChanged

Signal
ModelAnimationPlayer.onCanUpdateModelChanged: Signal

Fires after canUpdateModel changes.

onModelRemoving

Signal
ModelAnimationPlayer.onModelRemoving: Signal

Fires before AnimationModel is destroyed. Useful for disconnecting and destroying AnimationModel related events and Instances.

onModelChanged

Signal
ModelAnimationPlayer.onModelChanged: Signal

Fires on a new AnimationModel set. Is called after onModelRemoving. If you are setting up a plugin, do not use this signal to initialize the AnimationModel as it is not called on first update, but during :setModel(). Instead, pass in the current AnimationModel.

Functions

new

Constructor
ModelAnimationPlayer.new(
animPlayerAnimationPlayer,
getTrack(trackNamestring) → CFrameTrack
) → ()

Constructor. Creates a new ModelAnimationPlayer

Destroy

Deconstructor
ModelAnimationPlayer:Destroy() → ()

Deconstructor

setModel

ModelAnimationPlayer:setModel(newAnimationModelAnimationModel) → AnimationModel

Sets the AnimationModel

update

ModelAnimationPlayer:update(steppednumber) → ()

Updates AnimationPlayer and model position

getCanUpdateModel

ModelAnimationPlayer:getCanUpdateModel() → boolean

Returns true if canUpdateModel

isActive

ModelAnimationPlayer:isActive() → boolean

Returns true if currentState will update time

isInactive

ModelAnimationPlayer:isInactive() → boolean

Returns true if currentState will NOT update time

isPlaying

ModelAnimationPlayer:isPlaying() → boolean

Returns true if currentState is Playing

isPaused

ModelAnimationPlayer:isPaused() → boolean

Returns true if currentState is Paused

isStopped

ModelAnimationPlayer:isStopped() → boolean

Returns true if currentState is Stopped

isLooping

ModelAnimationPlayer:isLooping() → boolean

Returns true if animation will loop

getIsLooping

ModelAnimationPlayer:getIsLooping() → boolean

Returns true if animation will loop

getTimeScale

ModelAnimationPlayer:getTimeScale() → number

Returns the current time scale

getUpdateDirection

ModelAnimationPlayer:getUpdateDirection() → boolean

Returns the current update direction

setIsLooped

ModelAnimationPlayer:setIsLooped(valueboolean) → ()

Set whether animation loops when it reaches it length

setTimeScale

ModelAnimationPlayer:setTimeScale(valueboolean) → ()

Sets how fast time will move

setUpdateDirection

ModelAnimationPlayer:setUpdateDirection(valueboolean) → ()

Sets which direction time moves: forwards (true) or backwards (false).

setAnimation

ModelAnimationPlayer:setAnimation(
newAnimationAnimation | string | any,
keepCurrentTimeboolean | number | nil
) → ()

Sets the current animation

setCurrentTime

ModelAnimationPlayer:setCurrentTime(newCurrentTimenumber) → ()

Sets the currentTime

setName

ModelAnimationPlayer:setName(namestring) → ()

Sets the name

restart

ModelAnimationPlayer:restart() → ()

Restarts the AnimationPlayer Will set the current time to 0.0 If is currently not playing, will also change state to Playing

play

ModelAnimationPlayer:play() → ()

Starts the AnimationPlayer and plays the current animation

pause

ModelAnimationPlayer:pause() → ()

Pauses the AnimationPlayer

stop

ModelAnimationPlayer:stop() → ()

Stops the AnimationPlayer. Next time :play() is called, the animation will start at 0.0 (only when state changes from Stopped to Playing)

playWithEasing

ModelAnimationPlayer:playWithEasing(tweenDataTimeUpdaterTweenData) → ()

Eases then transitions to Playing state

pauseWithEasing

ModelAnimationPlayer:pauseWithEasing(tweenDataTimeUpdaterTweenData) → ()

Eases then transitions to Paused state

stopWithEasing

ModelAnimationPlayer:stopWithEasing(tweenDataTimeUpdaterTweenData) → ()

Eases then transitions to Stopped state

getCurrentTime

ModelAnimationPlayer:getCurrentTime() → number

Returns the current time

getCurrentModelTime

ModelAnimationPlayer:getCurrentModelTime() → number

Returns the current model time

getCurrentState

ModelAnimationPlayer:getCurrentState() → AnimationState

Returns the currentState of the animation player

getCurrentData

ModelAnimationPlayer:getCurrentData() → AnimationTimeData?

getCurrentPosition

ModelAnimationPlayer:getCurrentPosition() → number?

Returns current track position

getCurrentTrackSpeed

ModelAnimationPlayer:getCurrentTrackSpeed() → number

Returns current trackSpeed

getCurrentTrackName

ModelAnimationPlayer:getCurrentTrackName() → string?

Returns current trackName

getTrigger

ModelAnimationPlayer:getTrigger(triggerNamestring) → Signal

See AnimationPlayer:getTrigger()

getCurrentModel

ModelAnimationPlayer:getCurrentModel() → Model?

Returns the current model Instance used to animate

setUpdateInterval

ModelAnimationPlayer:setUpdateInterval(newIntervalnumber) → ()

Sets the updateInterval Setting with also reset the current updateCounter

setCanUpdateModel

ModelAnimationPlayer:setCanUpdateModel(newValueboolean) → ()

Sets if Model can be updated

setRootUpdater

ModelAnimationPlayer:setRootUpdater(newRootUpdater) → ()

Sets the object which updates this Used for AnimationPlayer binding

addToUpdater

ModelAnimationPlayer:addToUpdater(otherUpdaterUpdater) → ()

Adds an object to be updated by this object Used for AnimationPlayer binding

removeFromUpdater

ModelAnimationPlayer:removeFromUpdater(otherUpdaterUpdater) → ()

Removes an object from being updated by this Used for AnimationPlayer binding

bindToAnimationPlayer

ModelAnimationPlayer:bindToAnimationPlayer(
parentAnimPlayerModelAnimationPlayer,
offsetnumber
) → ()

Binds this ModelAnimationPlayer's update to another ModelAnimationPlayer and makes it so this updates directly after the other. Will respond to state changes as well. If you just want to respond to time changes, use :bindToAnimationPlayerTime()

bindToAnimationPlayerTime

ModelAnimationPlayer:bindToAnimationPlayerTime(
parentAnimPlayerModelAnimationPlayer,--

ModelAnimationPlayer to bind to

offsetnumber?--

Optional time offset

) → ()

Binds this ModelAnimationPlayer's update to another ModelAnimationPlayer, but only to it's current time, and makes it so this updates directly after the other. If you would also want state changes from the other AnimationPlayer to affect this, use :bindToAnimationPlayer()

unbindFromAnimationPlayer

ModelAnimationPlayer:unbindFromAnimationPlayer() → ()

Unbinds the current bound ModelAnimationPlayer

Show raw api
{
    "functions": [
        {
            "name": "new",
            "desc": "Constructor.\nCreates a new ModelAnimationPlayer",
            "params": [
                {
                    "name": "animPlayer",
                    "desc": "",
                    "lua_type": "AnimationPlayer"
                },
                {
                    "name": "getTrack",
                    "desc": "",
                    "lua_type": "(trackName: string) -> CFrameTrack"
                }
            ],
            "returns": [],
            "function_type": "static",
            "tags": [
                "Constructor"
            ],
            "source": {
                "line": 138,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "Destroy",
            "desc": "Deconstructor",
            "params": [],
            "returns": [],
            "function_type": "method",
            "tags": [
                "Deconstructor"
            ],
            "source": {
                "line": 235,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "_setupAnimationPlayer",
            "desc": "Sets up AnimationPlayer",
            "params": [
                {
                    "name": "animPlayer",
                    "desc": "",
                    "lua_type": "AnimationPlayer"
                }
            ],
            "returns": [],
            "function_type": "method",
            "private": true,
            "source": {
                "line": 268,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "setModel",
            "desc": "Sets the AnimationModel",
            "params": [
                {
                    "name": "newAnimationModel",
                    "desc": "",
                    "lua_type": "AnimationModel"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "AnimationModel"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 306,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "update",
            "desc": "Updates AnimationPlayer and model position",
            "params": [
                {
                    "name": "stepped",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 323,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getCanUpdateModel",
            "desc": "Returns true if canUpdateModel",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 357,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "_doUpdateModel",
            "desc": "Updates updateInterval then updates train model",
            "params": [
                {
                    "name": "stepped",
                    "desc": "",
                    "lua_type": "any"
                }
            ],
            "returns": [],
            "function_type": "method",
            "private": true,
            "source": {
                "line": 364,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "_updateModel",
            "desc": "Updates the position of the Model in the world",
            "params": [
                {
                    "name": "stepped",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "method",
            "private": true,
            "source": {
                "line": 385,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "isActive",
            "desc": "Returns true if `currentState` will update time",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 414,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "isInactive",
            "desc": "Returns true if `currentState` will NOT update time",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 420,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "isPlaying",
            "desc": "Returns true if currentState is Playing",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 426,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "isPaused",
            "desc": "Returns true if currentState is Paused",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 432,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "isStopped",
            "desc": "Returns true if currentState is Stopped",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 438,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "isLooping",
            "desc": "Returns true if animation will loop",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 444,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getIsLooping",
            "desc": "Returns true if animation will loop",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 450,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getTimeScale",
            "desc": "Returns the current time scale",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 456,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getUpdateDirection",
            "desc": "Returns the current update direction",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 462,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "setIsLooped",
            "desc": "Set whether animation loops when it reaches it length",
            "params": [
                {
                    "name": "value",
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 468,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "setTimeScale",
            "desc": "Sets how fast time will move",
            "params": [
                {
                    "name": "value",
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 476,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "setUpdateDirection",
            "desc": "Sets which direction time moves: forwards (true) or backwards (false).",
            "params": [
                {
                    "name": "value",
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 484,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "setAnimation",
            "desc": "Sets the current animation",
            "params": [
                {
                    "name": "newAnimation",
                    "desc": "",
                    "lua_type": "Animation | string | any"
                },
                {
                    "name": "keepCurrentTime",
                    "desc": "",
                    "lua_type": "boolean | number | nil"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 493,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "setCurrentTime",
            "desc": "Sets the currentTime",
            "params": [
                {
                    "name": "newCurrentTime",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 499,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "setName",
            "desc": "Sets the name",
            "params": [
                {
                    "name": "name",
                    "desc": "",
                    "lua_type": "string"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 507,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "restart",
            "desc": "Restarts the AnimationPlayer\nWill set the current time to 0.0\nIf is currently not playing, will also change state to Playing",
            "params": [],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 516,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "play",
            "desc": "Starts the AnimationPlayer and plays the current animation",
            "params": [],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 521,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "pause",
            "desc": "Pauses the AnimationPlayer",
            "params": [],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 526,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "stop",
            "desc": "Stops the AnimationPlayer.\nNext time :play() is called, the animation will start at 0.0\n(only when state changes from Stopped to Playing)",
            "params": [],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 533,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "playWithEasing",
            "desc": "Eases then transitions to Playing state",
            "params": [
                {
                    "name": "tweenData",
                    "desc": "",
                    "lua_type": "TimeUpdaterTweenData"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 539,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "pauseWithEasing",
            "desc": "Eases then transitions to Paused state",
            "params": [
                {
                    "name": "tweenData",
                    "desc": "",
                    "lua_type": "TimeUpdaterTweenData"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 545,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "stopWithEasing",
            "desc": "Eases then transitions to Stopped state",
            "params": [
                {
                    "name": "tweenData",
                    "desc": "",
                    "lua_type": "TimeUpdaterTweenData"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 551,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getCurrentTime",
            "desc": "Returns the current time",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 557,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getCurrentModelTime",
            "desc": "Returns the current model time",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 563,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getCurrentState",
            "desc": "Returns the currentState of the animation player",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "AnimationState"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 569,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getCurrentData",
            "desc": "",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "AnimationTimeData?"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 574,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getCurrentPosition",
            "desc": "Returns current track position",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 580,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getCurrentTrackSpeed",
            "desc": "Returns current trackSpeed",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 592,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getCurrentTrackName",
            "desc": "Returns current trackName",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "string?"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 604,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getTrigger",
            "desc": "See AnimationPlayer:getTrigger()",
            "params": [
                {
                    "name": "triggerName",
                    "desc": "",
                    "lua_type": "string"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Signal"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 616,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getCurrentModel",
            "desc": "Returns the current model Instance used to animate",
            "params": [],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Model?"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 622,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "setUpdateInterval",
            "desc": "Sets the updateInterval\nSetting with also reset the current updateCounter",
            "params": [
                {
                    "name": "newInterval",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 629,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "setCanUpdateModel",
            "desc": "Sets if Model can be updated",
            "params": [
                {
                    "name": "newValue",
                    "desc": "",
                    "lua_type": "boolean"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 638,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "setRootUpdater",
            "desc": "Sets the object which updates this\nUsed for AnimationPlayer binding",
            "params": [
                {
                    "name": "newRoot",
                    "desc": "",
                    "lua_type": "Updater"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 647,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "addToUpdater",
            "desc": "Adds an object to be updated by this object\nUsed for AnimationPlayer binding",
            "params": [
                {
                    "name": "otherUpdater",
                    "desc": "",
                    "lua_type": "Updater"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 654,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "removeFromUpdater",
            "desc": "Removes an object from being updated by this\nUsed for AnimationPlayer binding",
            "params": [
                {
                    "name": "otherUpdater",
                    "desc": "",
                    "lua_type": "Updater"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 661,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "bindToAnimationPlayer",
            "desc": "Binds this ModelAnimationPlayer's update to another ModelAnimationPlayer\nand makes it so this updates directly after the other.\nWill respond to state changes as well.\nIf you just want to respond to time changes, use `:bindToAnimationPlayerTime()`",
            "params": [
                {
                    "name": "parentAnimPlayer",
                    "desc": "",
                    "lua_type": "ModelAnimationPlayer"
                },
                {
                    "name": "offset",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 677,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "bindToAnimationPlayerTime",
            "desc": "Binds this ModelAnimationPlayer's update to another ModelAnimationPlayer, but only to it's current time,\nand makes it so this updates directly after the other.\nIf you would also want state changes from the other AnimationPlayer to affect this,\nuse `:bindToAnimationPlayer()`",
            "params": [
                {
                    "name": "parentAnimPlayer",
                    "desc": "ModelAnimationPlayer to bind to",
                    "lua_type": "ModelAnimationPlayer"
                },
                {
                    "name": "offset",
                    "desc": "Optional time offset",
                    "lua_type": "number?"
                }
            ],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 696,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "_bindToAnimationPlayer",
            "desc": "Internally sets new parent updater",
            "params": [
                {
                    "name": "parentAnimPlayer",
                    "desc": "",
                    "lua_type": "ModelAnimationPlayer"
                },
                {
                    "name": "offset",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "method",
            "private": true,
            "source": {
                "line": 708,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "unbindFromAnimationPlayer",
            "desc": "Unbinds the current bound ModelAnimationPlayer",
            "params": [],
            "returns": [],
            "function_type": "method",
            "source": {
                "line": 722,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        }
    ],
    "properties": [
        {
            "name": "maid",
            "desc": "",
            "lua_type": "Maid",
            "source": {
                "line": 38,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "animationPlayer",
            "desc": "",
            "lua_type": "AnimationPlayer",
            "source": {
                "line": 41,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "animationModel",
            "desc": "",
            "lua_type": "AnimationModel",
            "source": {
                "line": 44,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "getTrack",
            "desc": "",
            "lua_type": "(trackName: string) -> CFrameTrack",
            "source": {
                "line": 47,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onPlaying",
            "desc": "Fires when the current state changes to `AnimationState.Playing`.\nOnly fires when `update()` is called.",
            "lua_type": "Signal",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 53,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onPaused",
            "desc": "Fires when the current state changes to `AnimationState.Paused`.\nOnly fires when `update()` is called.",
            "lua_type": "Signal",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 59,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onStopped",
            "desc": "Fires when the current state changes to `AnimationState.Stopped`.\nOnly fires when `update()` is called.",
            "lua_type": "Signal",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 65,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onStateChanged",
            "desc": "Fires when the current state changes from the last update.\nOnly fires when `update()` is called.\nSee TimeUpdater.AnimationState",
            "lua_type": "Signal",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 72,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onAnimationLengthReached",
            "desc": "Fires when the animation player current time reaches the current animation's length and `isLooped` is `false`.",
            "lua_type": "Signal",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 77,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onAnimationChanged",
            "desc": "Fires when the current animation value changes from the last update.\nOnly fires when `update()` is called.",
            "lua_type": "Signal",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 83,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onLooped",
            "desc": "Fires when the current animation loops: the current time reaches the current animation's length while `isLooped` is `true`.\nOnly fires when `update()` is called.",
            "lua_type": "Signal",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 89,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onPreUpdated",
            "desc": "Fires before current time, state, and model is updated.",
            "lua_type": "Signal<(stepped: number) -> ()>",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 94,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onTimeUpdated",
            "desc": "Fires after current time and state are updated, but before model is updated.",
            "lua_type": "Signal<(stepped: number) -> ()>",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 99,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onPreBoundUpdated",
            "desc": "Fires before AnimationPlayers bound to this with `:bindToAnimationPlayer()` are updated.",
            "lua_type": "Signal<(stepped: number) -> ()>",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 104,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onUpdated",
            "desc": "Fires last after current time and state, AnimationModel, and bound AnimationPlayers are updated.",
            "lua_type": "Signal<(stepped: number) -> ()>",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 109,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onCanUpdateModelChanged",
            "desc": "Fires after `canUpdateModel` changes.",
            "lua_type": "Signal",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 114,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onModelRemoving",
            "desc": "Fires before AnimationModel is destroyed.\nUseful for disconnecting and destroying AnimationModel related events and Instances.",
            "lua_type": "Signal",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 120,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        },
        {
            "name": "onModelChanged",
            "desc": "Fires on a new AnimationModel set. Is called after `onModelRemoving`.\nIf you are setting up a plugin, do not use this signal to initialize the `AnimationModel` as it is not called\non first update, but during `:setModel()`. Instead, pass in the current AnimationModel.",
            "lua_type": "Signal",
            "tags": [
                "Signal"
            ],
            "source": {
                "line": 127,
                "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
            }
        }
    ],
    "types": [],
    "name": "ModelAnimationPlayer",
    "desc": "Animates a Model\n#### Update signals firing order\n- onPreUpdated\n- onCanUpdateModelChanged\n- onModelPreUpdated\n- animationModel.onUpdated\n\t- Fired through calling `AnimationModel:update()` or through `AnimationModel:setInDefaultPosition()` which calls `AnimationModel:update()`\n- onModelUpdated\n- onPreBoundUpdated\n- onUpdated",
    "source": {
        "line": 35,
        "path": "src/shared/modelAnimationPlayer/ModelAnimationPlayer.lua"
    }
}