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(
keyframeSequence: KeyframeSequence,
hasherNodeMap: PoseHasherNodeMap,--

Full path to the deepest used Pose.

rootCFrame: CFrame?--

Defaults to CFrame.new()

) → RobloxAnimationCFrameTrack

Types

​

interface PoseHasherNode {
subNodes: {[string]: PoseHasherNode}
}

​

type PoseHasherNodeMap = {[string]: PoseHasherNode}

createHasherMap​

RobloxAnimationCFrameTrack.createHasherMap(
keyframeSequence: KeyframeSequence,
hashInterval: number?--

Default = 1

) → Result<PositionDataHasher<PoseKeyframe>,string>

Types

​

interface PoseKeyframe {
cframe: CFrame
easingStyle: Enum.EasingStyle
easingDirection: Enum.EasingDirection
position: number--

time position

}

Creates PositionDataHashers needed to create a RobloxAnimationCFrameTrack

create​

RobloxAnimationCFrameTrack.create(
keyframeSequence: KeyframeSequence,
hashInterval: number?,
rootCFrame: CFrame?
) → Result<RobloxAnimationCFrameTrack,string>

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

fromInstance​

RobloxAnimationCFrameTrack.fromInstance(instance: Instance) → Result<RobloxAnimationCFrameTrack,string>

Creates a RobloxAnimationCFrameTrack from an Instance

Children

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

getCFrame​

RobloxAnimationCFrameTrack:getCFrame(
_position: number--

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(
position: number--

This is the Time position

) → JointDataMap

Types

​

interface JointData {
cframe: CFrame
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"
    }
}