Skip to main content

RobloxAnimationCFrameTrack

Extends CFrameTrack

Implementation of Roblox Animation (KeyframeSequence) to be played by rtrf.

Types

PoseKeyframeNode

interface PoseKeyframeNode {
keyframeMap{[Keyframe]Pose}
subPoses{[string]PoseKeyframeNode}
}

PoseKeyframeNodeMap

type PoseKeyframeNodeMap = {[string]PoseKeyframeNode}

Properties

rootCFrame

RobloxAnimationCFrameTrack.rootCFrame: CFrame

World-space CFrame used for determining the "start" or "root" position.

keyframeSequence

RobloxAnimationCFrameTrack.keyframeSequence: KeyframeSequence

hashers

RobloxAnimationCFrameTrack.hashers: {PositionDataHasher<PoseKeyframe>}

length

RobloxAnimationCFrameTrack.length: number

Determined by the greatest Time property of KeyframeSequence's Keyframes.

isCircuited

RobloxAnimationCFrameTrack.isCircuited: boolean

Determined by KeyframeSequence.Looped

Functions

new

Constructor
RobloxAnimationCFrameTrack.new(
keyframeSequenceKeyframeSequence,
hasherNodeMapPoseHasherNodeMap,--

Full path to the deepest used Pose.

rootCFrameCFrame?--

Defaults to CFrame.new()

) → RobloxAnimationCFrameTrack

Types

interface PoseHasherNode {
subNodes{[string]PoseHasherNode}
}

type PoseHasherNodeMap = {[string]PoseHasherNode}

createHasherMap

RobloxAnimationCFrameTrack.createHasherMap(
keyframeSequenceKeyframeSequence,
hashIntervalnumber?--

Default = 1

) → Result<PositionDataHasher<PoseKeyframe>,string>

Types

interface PoseKeyframe {
cframeCFrame
easingStyleEnum.EasingStyle
easingDirectionEnum.EasingDirection
positionnumber--

time position

}

Creates PositionDataHashers needed to create a RobloxAnimationCFrameTrack

create

RobloxAnimationCFrameTrack.create(
keyframeSequenceKeyframeSequence,
hashIntervalnumber?,
rootCFrameCFrame?
) → Result<RobloxAnimationCFrameTrack,string>

Creates a RobloxAnimationCFrameTrack. Extracts the KeyframeData and creates the necessary hashers for a RobloxAnimationCFrameTrack.

fromInstance

RobloxAnimationCFrameTrack.fromInstance(instanceInstance) → Result<RobloxAnimationCFrameTrack,string>

Creates a RobloxAnimationCFrameTrack from an Instance

Children

{
	KeyframeSequence: KeyframeSequence | ObjectValue<KeyframeSequence>,
	HashInterval: NumberValue?,
	RootCFrame: CFrameInstance?,
}

getCFrame

RobloxAnimationCFrameTrack:getCFrame(
_positionnumber--

This is the Time position

) → CFrame

Returns a CFrame at the given position Since most of the implementation is meant for rigs, this just returns the rootCFrame

getJointData

RobloxAnimationCFrameTrack:getJointData(
positionnumber--

This is the Time position

) → JointDataMap

Types

interface JointData {
cframeCFrame
subJoints{[string]JointData}
}

type JointDataMap = {[string]JointData}

Returns the positions of the joints for the animation at the given time.

Show raw api
{
    "functions": [
        {
            "name": "new",
            "desc": "",
            "params": [
                {
                    "name": "keyframeSequence",
                    "desc": "",
                    "lua_type": "KeyframeSequence"
                },
                {
                    "name": "hasherNodeMap",
                    "desc": "Full path to the deepest used Pose.",
                    "lua_type": "PoseHasherNodeMap"
                },
                {
                    "name": "rootCFrame",
                    "desc": "Defaults to CFrame.new()",
                    "lua_type": "CFrame?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "RobloxAnimationCFrameTrack"
                }
            ],
            "function_type": "static",
            "tags": [
                "Constructor"
            ],
            "source": {
                "line": 94,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "createHasherMap",
            "desc": "Creates PositionDataHashers needed to create a RobloxAnimationCFrameTrack",
            "params": [
                {
                    "name": "keyframeSequence",
                    "desc": "",
                    "lua_type": "KeyframeSequence"
                },
                {
                    "name": "hashInterval",
                    "desc": "Default = 1",
                    "lua_type": "number?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Result<PositionDataHasher<PoseKeyframe>, string>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 137,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "create",
            "desc": "Creates a RobloxAnimationCFrameTrack.\nExtracts the KeyframeData and creates the necessary hashers for a RobloxAnimationCFrameTrack.",
            "params": [
                {
                    "name": "keyframeSequence",
                    "desc": "",
                    "lua_type": "KeyframeSequence"
                },
                {
                    "name": "hashInterval",
                    "desc": "",
                    "lua_type": "number?"
                },
                {
                    "name": "rootCFrame",
                    "desc": "",
                    "lua_type": "CFrame?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Result<RobloxAnimationCFrameTrack, string>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 262,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "fromInstance",
            "desc": "Creates a RobloxAnimationCFrameTrack from an Instance\n\n### Children\n```ts\n{\n\tKeyframeSequence: KeyframeSequence | ObjectValue<KeyframeSequence>,\n\tHashInterval: NumberValue?,\n\tRootCFrame: CFrameInstance?,\n}\n```",
            "params": [
                {
                    "name": "instance",
                    "desc": "",
                    "lua_type": "Instance"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Result<RobloxAnimationCFrameTrack, string>"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 293,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "getCFrame",
            "desc": "Returns a CFrame at the given position\nSince most of the implementation is meant for rigs, this just returns the `rootCFrame`",
            "params": [
                {
                    "name": "_position",
                    "desc": "This is the Time position",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "CFrame"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 337,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "getJointData",
            "desc": "Returns the positions of the joints for the animation at the given time.",
            "params": [
                {
                    "name": "position",
                    "desc": "This is the Time position",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "JointDataMap"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 357,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        }
    ],
    "properties": [
        {
            "name": "rootCFrame",
            "desc": "World-space CFrame used for determining the \"start\" or \"root\" position.",
            "lua_type": "CFrame",
            "source": {
                "line": 69,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "keyframeSequence",
            "desc": "",
            "lua_type": "KeyframeSequence",
            "source": {
                "line": 72,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "hashers",
            "desc": "",
            "lua_type": "{PositionDataHasher<PoseKeyframe>}",
            "source": {
                "line": 75,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "length",
            "desc": "Determined by the greatest Time property of KeyframeSequence's Keyframes.",
            "lua_type": "number",
            "source": {
                "line": 79,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "isCircuited",
            "desc": "Determined by `KeyframeSequence.Looped`",
            "lua_type": "boolean",
            "source": {
                "line": 83,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        }
    ],
    "types": [
        {
            "name": "PoseKeyframe",
            "desc": "",
            "fields": [
                {
                    "name": "cframe",
                    "lua_type": "CFrame",
                    "desc": ""
                },
                {
                    "name": "easingStyle",
                    "lua_type": "Enum.EasingStyle",
                    "desc": ""
                },
                {
                    "name": "easingDirection",
                    "lua_type": "Enum.EasingDirection",
                    "desc": ""
                },
                {
                    "name": "position",
                    "lua_type": "number",
                    "desc": "time position"
                }
            ],
            "source": {
                "line": 38,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "PoseHasherNode",
            "desc": "",
            "fields": [
                {
                    "name": "hasher",
                    "lua_type": "PositionDataHasher<PoseKeyframe>",
                    "desc": ""
                },
                {
                    "name": "subNodes",
                    "lua_type": "{[string]: PoseHasherNode}",
                    "desc": ""
                }
            ],
            "source": {
                "line": 49,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "PoseHasherNodeMap",
            "desc": "",
            "lua_type": "{[string]: PoseHasherNode}",
            "source": {
                "line": 56,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "PoseKeyframeNode",
            "desc": "",
            "fields": [
                {
                    "name": "keyframeMap",
                    "lua_type": "{[Keyframe]: Pose}",
                    "desc": ""
                },
                {
                    "name": "subPoses",
                    "lua_type": "{[string]: PoseKeyframeNode}",
                    "desc": ""
                }
            ],
            "source": {
                "line": 124,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "PoseKeyframeNodeMap",
            "desc": "",
            "lua_type": "{[string]: PoseKeyframeNode}",
            "source": {
                "line": 131,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "JointData",
            "desc": "",
            "fields": [
                {
                    "name": "cframe",
                    "lua_type": "CFrame",
                    "desc": ""
                },
                {
                    "name": "subJoints",
                    "lua_type": "{[string]: JointData}",
                    "desc": ""
                }
            ],
            "source": {
                "line": 345,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        },
        {
            "name": "JointDataMap",
            "desc": "",
            "lua_type": "{[string]: JointData}",
            "source": {
                "line": 352,
                "path": "src/shared/cframeTrack/RobloxAnimation.lua"
            }
        }
    ],
    "name": "RobloxAnimationCFrameTrack",
    "desc": "#### Extends [CFrameTrack]\n\nImplementation of Roblox Animation ([KeyframeSequence](https://create.roblox.com/docs/reference/engine/classes/KeyframeSequence)) to be played by rtrf.",
    "source": {
        "line": 65,
        "path": "src/shared/cframeTrack/RobloxAnimation.lua"
    }
}