## [:rewind: Lua Reference](lua.md)
# Supported Structs
- [Animation](#Animation)
- [Area](#Area)
- [Camera](#Camera)
- [CameraFOVStatus](#CameraFOVStatus)
- [CameraStoredInfo](#CameraStoredInfo)
- [CameraTrigger](#CameraTrigger)
- [Character](#Character)
- [Controller](#Controller)
- [Cutscene](#Cutscene)
- [CutsceneSplinePoint](#CutsceneSplinePoint)
- [CutsceneVariable](#CutsceneVariable)
- [FloorGeometry](#FloorGeometry)
- [GraphNode](#GraphNode)
- [GraphNodeObject](#GraphNodeObject)
- [GraphNodeObject_sub](#GraphNodeObject_sub)
- [HandheldShakePoint](#HandheldShakePoint)
- [InstantWarp](#InstantWarp)
- [LakituState](#LakituState)
- [LinearTransitionPoint](#LinearTransitionPoint)
- [MarioAnimDmaRelatedThing](#MarioAnimDmaRelatedThing)
- [MarioAnimation](#MarioAnimation)
- [MarioBodyState](#MarioBodyState)
- [MarioState](#MarioState)
- [ModeTransitionInfo](#ModeTransitionInfo)
- [Object](#Object)
- [ObjectHitbox](#ObjectHitbox)
- [ObjectNode](#ObjectNode)
- [ObjectWarpNode](#ObjectWarpNode)
- [OffsetSizePair](#OffsetSizePair)
- [ParallelTrackingPoint](#ParallelTrackingPoint)
- [PlayerCameraState](#PlayerCameraState)
- [PlayerGeometry](#PlayerGeometry)
- [SPTask](#SPTask)
- [SpawnInfo](#SpawnInfo)
- [Surface](#Surface)
- [TransitionInfo](#TransitionInfo)
- [UnusedArea28](#UnusedArea28)
- [VblankHandler](#VblankHandler)
- [Vec3f](#Vec3f)
- [Vec3s](#Vec3s)
- [WallCollisionData](#WallCollisionData)
- [WarpNode](#WarpNode)
- [WarpTransition](#WarpTransition)
- [WarpTransitionData](#WarpTransitionData)
- [Waypoint](#Waypoint)
- [Whirlpool](#Whirlpool)
## [Animation](#Animation)
| Field | Type |
| ----- | ---- |
| flags | integer |
| length | integer |
| animYTransDivisor | integer |
| startFrame | integer |
| loopStart | integer |
| loopEnd | integer |
| unusedBoneCount | integer |
[:arrow_up_small:](#)
## [Area](#Area)
| Field | Type |
| ----- | ---- |
| camera | [Camera](#Camera) |
| flags | integer |
| index | integer |
| instantWarps | [InstantWarp](#InstantWarp) |
| musicParam | integer |
| musicParam2 | integer |
| objectSpawnInfos | [SpawnInfo](#SpawnInfo) |
| paintingWarpNodes | [WarpNode](#WarpNode) |
| terrainType | integer |
| warpNodes | [ObjectWarpNode](#ObjectWarpNode) |
[:arrow_up_small:](#)
## [Camera](#Camera)
| Field | Type |
| ----- | ---- |
| areaCenX | number |
| areaCenY | number |
| areaCenZ | number |
| cutscene | integer |
| defMode | integer |
| doorStatus | integer |
| focus | [Vec3f](#Vec3f) |
| mode | integer |
| nextYaw | integer |
| pos | [Vec3f](#Vec3f) |
| unusedVec1 | [Vec3f](#Vec3f) |
| yaw | integer |
[:arrow_up_small:](#)
## [CameraFOVStatus](#CameraFOVStatus)
| Field | Type |
| ----- | ---- |
| decay | integer |
| fov | number |
| fovFunc | integer |
| fovOffset | number |
| shakeAmplitude | number |
| shakePhase | integer |
| shakeSpeed | integer |
| unusedIsSleeping | integer |
[:arrow_up_small:](#)
## [CameraStoredInfo](#CameraStoredInfo)
| Field | Type |
| ----- | ---- |
| cannonYOffset | number |
| focus | [Vec3f](#Vec3f) |
| panDist | number |
| pos | [Vec3f](#Vec3f) |
[:arrow_up_small:](#)
## [CameraTrigger](#CameraTrigger)
| Field | Type |
| ----- | ---- |
| area | integer |
| boundsX | integer |
| boundsY | integer |
| boundsYaw | integer |
| boundsZ | integer |
| centerX | integer |
| centerY | integer |
| centerZ | integer |
[:arrow_up_small:](#)
## [Character](#Character)
| Field | Type |
| ----- | ---- |
| animOffsetEnabled | integer |
| animOffsetFeet | number |
| animOffsetHand | number |
| animOffsetLowYPoint | number |
| cameraHudHead | integer |
| capEnemyLayer | integer |
| capMetalModelId | integer |
| capMetalWingModelId | integer |
| capModelId | integer |
| capWingModelId | integer |
| modelId | integer |
| soundAttacked | integer |
| soundCoughing1 | integer |
| soundCoughing2 | integer |
| soundCoughing3 | integer |
| soundDoh | integer |
| soundDrowning | integer |
| soundDying | integer |
| soundEeuh | integer |
| soundFreqScale | number |
| soundGameOver | integer |
| soundGroundPoundWah | integer |
| soundHaha | integer |
| soundHaha_2 | integer |
| soundHello | integer |
| soundHereWeGo | integer |
| soundHoohoo | integer |
| soundHrmm | integer |
| soundImaTired | integer |
| soundMamaMia | integer |
| soundOnFire | integer |
| soundOoof | integer |
| soundOoof2 | integer |
| soundPanting | integer |
| soundPantingCold | integer |
| soundPressStartToPlay | integer |
| soundPunchHoo | integer |
| soundPunchWah | integer |
| soundPunchYah | integer |
| soundSnoring1 | integer |
| soundSnoring2 | integer |
| soundSnoring3 | integer |
| soundSoLongaBowser | integer |
| soundTwirlBounce | integer |
| soundUh | integer |
| soundUh2 | integer |
| soundUh2_2 | integer |
| soundWaaaooow | integer |
| soundWah2 | integer |
| soundWhoa | integer |
| soundYahWahHoo | integer |
| soundYahoo | integer |
| soundYahooWahaYippee | integer |
| soundYawning | integer |
| type | integer |
[:arrow_up_small:](#)
## [Controller](#Controller)
| Field | Type |
| ----- | ---- |
| buttonDown | integer |
| buttonPressed | integer |
| extStickX | integer |
| extStickY | integer |
| port | integer |
| rawStickX | integer |
| rawStickY | integer |
| stickMag | number |
| stickX | number |
| stickY | number |
[:arrow_up_small:](#)
## [Cutscene](#Cutscene)
| Field | Type |
| ----- | ---- |
| duration | integer |
[:arrow_up_small:](#)
## [CutsceneSplinePoint](#CutsceneSplinePoint)
| Field | Type |
| ----- | ---- |
| index | integer |
| point | [Vec3s](#Vec3s) |
| speed | integer |
[:arrow_up_small:](#)
## [CutsceneVariable](#CutsceneVariable)
| Field | Type |
| ----- | ---- |
| angle | [Vec3s](#Vec3s) |
| point | [Vec3f](#Vec3f) |
| unused1 | integer |
| unused2 | integer |
| unusedPoint | [Vec3f](#Vec3f) |
[:arrow_up_small:](#)
## [FloorGeometry](#FloorGeometry)
| Field | Type |
| ----- | ---- |
| normalX | number |
| normalY | number |
| normalZ | number |
| originOffset | number |
[:arrow_up_small:](#)
## [GraphNode](#GraphNode)
| Field | Type |
| ----- | ---- |
| children | [GraphNode](#GraphNode) |
| flags | integer |
| next | [GraphNode](#GraphNode) |
| parent | [GraphNode](#GraphNode) |
| prev | [GraphNode](#GraphNode) |
| type | integer |
[:arrow_up_small:](#)
## [GraphNodeObject](#GraphNodeObject)
| Field | Type |
| ----- | ---- |
| angle | [Vec3s](#Vec3s) |
| cameraToObject | [Vec3f](#Vec3f) |
| node | [GraphNode](#GraphNode) |
| pos | [Vec3f](#Vec3f) |
| prevAngle | [Vec3s](#Vec3s) |
| prevPos | [Vec3f](#Vec3f) |
| prevScale | [Vec3f](#Vec3f) |
| prevScaleTimestamp | integer |
| prevShadowPos | [Vec3f](#Vec3f) |
| prevShadowPosTimestamp | integer |
| prevThrowMatrixTimestamp | integer |
| prevTimestamp | integer |
| scale | [Vec3f](#Vec3f) |
| sharedChild | [GraphNode](#GraphNode) |
| skipInterpolationTimestamp | integer |
| unk18 | integer |
| unk19 | integer |
| animInfo | [GraphNodeObject_sub](#GraphNodeObject_sub) |
| unk4C | [SpawnInfo](#SpawnInfo) |
[:arrow_up_small:](#)
## [GraphNodeObject_sub](#GraphNodeObject_sub)
| Field | Type |
| ----- | ---- |
| animAccel | integer |
| animFrame | integer |
| animFrameAccelAssist | integer |
| animID | integer |
| animTimer | integer |
| animYTrans | integer |
| curAnim | [Animation](#Animation) |
| prevAnimFrame | integer |
| prevAnimFrameTimestamp | integer |
| prevAnimID | integer |
| prevAnimPtr | [Animation](#Animation) |
[:arrow_up_small:](#)
## [HandheldShakePoint](#HandheldShakePoint)
| Field | Type |
| ----- | ---- |
| index | integer |
| pad | integer |
| point | [Vec3s](#Vec3s) |
[:arrow_up_small:](#)
## [InstantWarp](#InstantWarp)
| Field | Type |
| ----- | ---- |
| area | integer |
| displacement | [Vec3s](#Vec3s) |
| id | integer |
[:arrow_up_small:](#)
## [LakituState](#LakituState)
| Field | Type |
| ----- | ---- |
| curFocus | [Vec3f](#Vec3f) |
| curPos | [Vec3f](#Vec3f) |
| defMode | integer |
| focHSpeed | number |
| focVSpeed | number |
| focus | [Vec3f](#Vec3f) |
| focusDistance | number |
| goalFocus | [Vec3f](#Vec3f) |
| goalPos | [Vec3f](#Vec3f) |
| keyDanceRoll | integer |
| lastFrameAction | integer |
| mode | integer |
| nextYaw | integer |
| oldPitch | integer |
| oldRoll | integer |
| oldYaw | integer |
| pos | [Vec3f](#Vec3f) |
| posHSpeed | number |
| posVSpeed | number |
| roll | integer |
| shakeMagnitude | [Vec3s](#Vec3s) |
| shakePitchDecay | integer |
| shakePitchPhase | integer |
| shakePitchVel | integer |
| shakeRollDecay | integer |
| shakeRollPhase | integer |
| shakeRollVel | integer |
| shakeYawDecay | integer |
| shakeYawPhase | integer |
| shakeYawVel | integer |
| skipCameraInterpolationTimestamp | integer |
| unused | integer |
| unusedVec1 | [Vec3f](#Vec3f) |
| unusedVec2 | [Vec3s](#Vec3s) |
| yaw | integer |
[:arrow_up_small:](#)
## [LinearTransitionPoint](#LinearTransitionPoint)
| Field | Type |
| ----- | ---- |
| dist | number |
| focus | [Vec3f](#Vec3f) |
| pitch | integer |
| pos | [Vec3f](#Vec3f) |
| yaw | integer |
[:arrow_up_small:](#)
## [MarioAnimation](#MarioAnimation)
| Field | Type |
| ----- | ---- |
| targetAnim | [Animation](#Animation) |
[:arrow_up_small:](#)
## [MarioBodyState](#MarioBodyState)
| Field | Type |
| ----- | ---- |
| action | integer |
| capState | integer |
| eyeState | integer |
| grabPos | integer |
| handState | integer |
| headAngle | [Vec3s](#Vec3s) |
| heldObjLastPosition | [Vec3f](#Vec3f) |
| modelState | integer |
| punchState | integer |
| torsoAngle | [Vec3s](#Vec3s) |
| torsoPos | [Vec3f](#Vec3f) |
| wingFlutter | integer |
[:arrow_up_small:](#)
## [MarioState](#MarioState)
| Field | Type |
| ----- | ---- |
| action | integer |
| actionArg | integer |
| actionState | integer |
| actionTimer | integer |
| angleVel | [Vec3s](#Vec3s) |
| animation | [MarioAnimation](#MarioAnimation) |
| area | [Area](#Area) |
| bubbleObj | [Object](#Object) |
| capTimer | integer |
| ceil | [Surface](#Surface) |
| ceilHeight | number |
| character | [Character](#Character) |
| collidedObjInteractTypes | integer |
| controller | [Controller](#Controller) |
| curAnimOffset | number |
| currentRoom | integer |
| doubleJumpTimer | integer |
| faceAngle | [Vec3s](#Vec3s) |
| fadeWarpOpacity | integer |
| flags | integer |
| floor | [Surface](#Surface) |
| floorAngle | integer |
| floorHeight | number |
| forwardVel | number |
| framesSinceA | integer |
| framesSinceB | integer |
| freeze | integer |
| healCounter | integer |
| health | integer |
| heldByObj | [Object](#Object) |
| heldObj | [Object](#Object) |
| hurtCounter | integer |
| input | integer |
| intendedMag | number |
| intendedYaw | integer |
| interactObj | [Object](#Object) |
| invincTimer | integer |
| isSnoring | integer |
| marioBodyState | [MarioBodyState](#MarioBodyState) |
| marioObj | [Object](#Object) |
| minimumBoneY | number |
| nonInstantWarpPos | [Vec3f](#Vec3f) |
| numCoins | integer |
| numKeys | integer |
| numLives | integer |
| numStars | integer |
| particleFlags | integer |
| peakHeight | number |
| playerIndex | integer |
| pos | [Vec3f](#Vec3f) |
| prevAction | integer |
| prevNumStarsForDialog | integer |
| quicksandDepth | number |
| riddenObj | [Object](#Object) |
| slideVelX | number |
| slideVelZ | number |
| slideYaw | integer |
| spawnInfo | [SpawnInfo](#SpawnInfo) |
| splineKeyframeFraction | number |
| splineState | integer |
| squishTimer | integer |
| statusForCamera | [PlayerCameraState](#PlayerCameraState) |
| terrainSoundAddend | integer |
| twirlYaw | integer |
| unkB0 | integer |
| unkC4 | number |
| usedObj | [Object](#Object) |
| vel | [Vec3f](#Vec3f) |
| wall | [Surface](#Surface) |
| wallKickTimer | integer |
| wasNetworkVisible | integer |
| waterLevel | integer |
[:arrow_up_small:](#)
## [ModeTransitionInfo](#ModeTransitionInfo)
| Field | Type |
| ----- | ---- |
| frame | integer |
| lastMode | integer |
| max | integer |
| newMode | integer |
| transitionEnd | [LinearTransitionPoint](#LinearTransitionPoint) |
| transitionStart | [LinearTransitionPoint](#LinearTransitionPoint) |
[:arrow_up_small:](#)
## [Object](#Object)
| Field | Type |
| ----- | ---- |
| activeFlags | integer |
| areaTimer | integer |
| areaTimerDuration | integer |
| areaTimerType | integer |
| bhvDelayTimer | integer |
| bhvStackIndex | integer |
| collidedObjInteractTypes | integer |
| createdThroughNetwork | integer |
| globalPlayerIndex | integer |
| header | [ObjectNode](#ObjectNode) |
| heldByPlayerIndex | integer |
| hitboxDownOffset | number |
| hitboxHeight | number |
| hitboxRadius | number |
| hurtboxHeight | number |
| hurtboxRadius | number |
| numCollidedObjs | integer |
| parentObj | [Object](#Object) |
| platform | [Object](#Object) |
| prevObj | [Object](#Object) |
| respawnInfoType | integer |
| unused1 | integer |
[:arrow_up_small:](#)
## [ObjectHitbox](#ObjectHitbox)
| Field | Type |
| ----- | ---- |
| damageOrCoinValue | integer |
| downOffset | integer |
| health | integer |
| height | integer |
| hurtboxHeight | integer |
| hurtboxRadius | integer |
| interactType | integer |
| numLootCoins | integer |
| radius | integer |
[:arrow_up_small:](#)
## [ObjectNode](#ObjectNode)
| Field | Type |
| ----- | ---- |
| gfx | [GraphNodeObject](#GraphNodeObject) |
| next | [ObjectNode](#ObjectNode) |
| prev | [ObjectNode](#ObjectNode) |
[:arrow_up_small:](#)
## [ObjectWarpNode](#ObjectWarpNode)
| Field | Type |
| ----- | ---- |
| next | [ObjectWarpNode](#ObjectWarpNode) |
| node | [WarpNode](#WarpNode) |
| object | [Object](#Object) |
[:arrow_up_small:](#)
## [OffsetSizePair](#OffsetSizePair)
| Field | Type |
| ----- | ---- |
| offset | integer |
| size | integer |
[:arrow_up_small:](#)
## [ParallelTrackingPoint](#ParallelTrackingPoint)
| Field | Type |
| ----- | ---- |
| distThresh | number |
| pos | [Vec3f](#Vec3f) |
| startOfPath | integer |
| zoom | number |
[:arrow_up_small:](#)
## [PlayerCameraState](#PlayerCameraState)
| Field | Type |
| ----- | ---- |
| action | integer |
| cameraEvent | integer |
| faceAngle | [Vec3s](#Vec3s) |
| headRotation | [Vec3s](#Vec3s) |
| pos | [Vec3f](#Vec3f) |
| unused | integer |
| usedObj | [Object](#Object) |
[:arrow_up_small:](#)
## [PlayerGeometry](#PlayerGeometry)
| Field | Type |
| ----- | ---- |
| currCeil | [Surface](#Surface) |
| currCeilHeight | number |
| currCeilType | integer |
| currFloor | [Surface](#Surface) |
| currFloorHeight | number |
| currFloorType | integer |
| prevCeil | [Surface](#Surface) |
| prevCeilHeight | number |
| prevCeilType | integer |
| prevFloor | [Surface](#Surface) |
| prevFloorHeight | number |
| prevFloorType | integer |
| waterHeight | number |
[:arrow_up_small:](#)
## [SpawnInfo](#SpawnInfo)
| Field | Type |
| ----- | ---- |
| activeAreaIndex | integer |
| areaIndex | integer |
| behaviorArg | integer |
| next | [SpawnInfo](#SpawnInfo) |
| startAngle | [Vec3s](#Vec3s) |
| startPos | [Vec3s](#Vec3s) |
| unk18 | [GraphNode](#GraphNode) |
[:arrow_up_small:](#)
## [Surface](#Surface)
| Field | Type |
| ----- | ---- |
| flags | integer |
| force | integer |
| lowerY | integer |
| modifiedTimestamp | integer |
| normal | [Vec3f](#Vec3f) |
| object | [Object](#Object) |
| originOffset | number |
| prevVertex1 | [Vec3s](#Vec3s) |
| prevVertex2 | [Vec3s](#Vec3s) |
| prevVertex3 | [Vec3s](#Vec3s) |
| room | integer |
| type | integer |
| upperY | integer |
| vertex1 | [Vec3s](#Vec3s) |
| vertex2 | [Vec3s](#Vec3s) |
| vertex3 | [Vec3s](#Vec3s) |
[:arrow_up_small:](#)
## [TransitionInfo](#TransitionInfo)
| Field | Type |
| ----- | ---- |
| focDist | number |
| focPitch | integer |
| focYaw | integer |
| framesLeft | integer |
| marioPos | [Vec3f](#Vec3f) |
| pad | integer |
| posDist | number |
| posPitch | integer |
| posYaw | integer |
[:arrow_up_small:](#)
## [Vec3f](#Vec3f)
| Field | Type |
| ----- | ---- |
| x | float |
| y | float |
| z | float |
[:arrow_up_small:](#)
## [Vec3s](#Vec3s)
| Field | Type |
| ----- | ---- |
| x | integer |
| y | integer |
| z | integer |
[:arrow_up_small:](#)
## [WallCollisionData](#WallCollisionData)
| Field | Type |
| ----- | ---- |
| numWalls | integer |
| offsetY | number |
| radius | number |
| unk14 | integer |
[:arrow_up_small:](#)
## [WarpNode](#WarpNode)
| Field | Type |
| ----- | ---- |
| destArea | integer |
| destLevel | integer |
| destNode | integer |
| id | integer |
[:arrow_up_small:](#)
## [WarpTransition](#WarpTransition)
| Field | Type |
| ----- | ---- |
| data | [WarpTransitionData](#WarpTransitionData) |
| isActive | integer |
| pauseRendering | integer |
| time | integer |
| type | integer |
[:arrow_up_small:](#)
## [WarpTransitionData](#WarpTransitionData)
| Field | Type |
| ----- | ---- |
| blue | integer |
| endTexRadius | integer |
| endTexX | integer |
| endTexY | integer |
| green | integer |
| red | integer |
| startTexRadius | integer |
| startTexX | integer |
| startTexY | integer |
| texTimer | integer |
[:arrow_up_small:](#)
## [Waypoint](#Waypoint)
| Field | Type |
| ----- | ---- |
| flags | integer |
| pos | [Vec3s](#Vec3s) |
[:arrow_up_small:](#)
## [Whirlpool](#Whirlpool)
| Field | Type |
| ----- | ---- |
| pos | [Vec3s](#Vec3s) |
| strength | integer |
[:arrow_up_small:](#)