diff --git a/autogen/common.py b/autogen/common.py
index 8fcd5c7a2..79d1207a4 100644
--- a/autogen/common.py
+++ b/autogen/common.py
@@ -2,7 +2,7 @@ import os
usf_types = ['u8', 'u16', 'u32', 'u64', 's8', 's16', 's32', 's64', 'f32']
vec3_types = ['Vec3s', 'Vec3f']
-typedef_pointers = ['BehaviorScript', 'ObjectAnimPointer', 'Collision', 'LevelScript']
+typedef_pointers = ['BehaviorScript', 'ObjectAnimPointer', 'Collision', 'LevelScript', 'Trajectory']
exclude_structs = [
'SPTask',
diff --git a/autogen/lua_definitions/structs.lua b/autogen/lua_definitions/structs.lua
index 955526893..bd3ac141e 100644
--- a/autogen/lua_definitions/structs.lua
+++ b/autogen/lua_definitions/structs.lua
@@ -41,6 +41,39 @@
--- @field public terrainType integer
--- @field public warpNodes ObjectWarpNode
+--- @class BehaviorTrajectories
+--- @field public BowlingBallBob2Trajectory Pointer_Trajectory
+--- @field public BowlingBallBobTrajectory Pointer_Trajectory
+--- @field public BowlingBallTtmTrajectory Pointer_Trajectory
+--- @field public KoopaBobTrajectory Pointer_Trajectory
+--- @field public KoopaThiTrajectory Pointer_Trajectory
+--- @field public Mips10Trajectory Pointer_Trajectory
+--- @field public Mips2Trajectory Pointer_Trajectory
+--- @field public Mips3Trajectory Pointer_Trajectory
+--- @field public Mips4Trajectory Pointer_Trajectory
+--- @field public Mips5Trajectory Pointer_Trajectory
+--- @field public Mips6Trajectory Pointer_Trajectory
+--- @field public Mips7Trajectory Pointer_Trajectory
+--- @field public Mips8Trajectory Pointer_Trajectory
+--- @field public Mips9Trajectory Pointer_Trajectory
+--- @field public MipsTrajectory Pointer_Trajectory
+--- @field public PlatformBitfsTrajectory Pointer_Trajectory
+--- @field public PlatformCcmTrajectory Pointer_Trajectory
+--- @field public PlatformHmcTrajectory Pointer_Trajectory
+--- @field public PlatformLll2Trajectory Pointer_Trajectory
+--- @field public PlatformLllTrajectory Pointer_Trajectory
+--- @field public PlatformRr2Trajectory Pointer_Trajectory
+--- @field public PlatformRr3Trajectory Pointer_Trajectory
+--- @field public PlatformRr4Trajectory Pointer_Trajectory
+--- @field public PlatformRrTrajectory Pointer_Trajectory
+--- @field public RacingPenguinTrajectory Pointer_Trajectory
+--- @field public SnowmanHeadTrajectory Pointer_Trajectory
+--- @field public Unagi2Trajectory Pointer_Trajectory
+--- @field public UnagiTrajectory Pointer_Trajectory
+
+--- @class BehaviorValues
+--- @field public trajectories BehaviorTrajectories
+
--- @class BullyCollisionData
--- @field public conversionRatio number
--- @field public posX number
@@ -1565,6 +1598,7 @@
--- @field public z integer
--- @class Pointer_integer
+--- @class Pointer_Trajectory
--- @class Pointer_ObjectAnimPointer
--- @class Pointer_Collision
--- @class Pointer_BehaviorScript
diff --git a/docs/lua/globals.md b/docs/lua/globals.md
index c6910f5a0..feb938225 100644
--- a/docs/lua/globals.md
+++ b/docs/lua/globals.md
@@ -59,7 +59,14 @@ The `gGlobalObjectCollisionData` table contains references to object collision d
## [gLevelValues](#gLevelValues)
-`gLevelValues`'s fields are listed in [LevelValue](structs.md#LevelValue).
+`gLevelValues`'s fields are listed in [LevelValues](structs.md#LevelValues).
+
+[:arrow_up_small:](#)
+
+
+
+## [gBehaviorValues](#gBehaviorValues)
+`gBehaviorValues`'s fields are listed in [BehaviorValues](structs.md#BehaviorValues).
[:arrow_up_small:](#)
diff --git a/docs/lua/structs.md b/docs/lua/structs.md
index bcf3fd30c..6abd80b07 100644
--- a/docs/lua/structs.md
+++ b/docs/lua/structs.md
@@ -4,6 +4,8 @@
- [AnimInfo](#AnimInfo)
- [Animation](#Animation)
- [Area](#Area)
+- [BehaviorTrajectories](#BehaviorTrajectories)
+- [BehaviorValues](#BehaviorValues)
- [BullyCollisionData](#BullyCollisionData)
- [Camera](#Camera)
- [CameraFOVStatus](#CameraFOVStatus)
@@ -129,6 +131,53 @@
+## [BehaviorTrajectories](#BehaviorTrajectories)
+
+| Field | Type | Access |
+| ----- | ---- | ------ |
+| BowlingBallBob2Trajectory | `Pointer` <`Trajectory`> | read-only |
+| BowlingBallBobTrajectory | `Pointer` <`Trajectory`> | read-only |
+| BowlingBallTtmTrajectory | `Pointer` <`Trajectory`> | read-only |
+| KoopaBobTrajectory | `Pointer` <`Trajectory`> | read-only |
+| KoopaThiTrajectory | `Pointer` <`Trajectory`> | read-only |
+| Mips10Trajectory | `Pointer` <`Trajectory`> | read-only |
+| Mips2Trajectory | `Pointer` <`Trajectory`> | read-only |
+| Mips3Trajectory | `Pointer` <`Trajectory`> | read-only |
+| Mips4Trajectory | `Pointer` <`Trajectory`> | read-only |
+| Mips5Trajectory | `Pointer` <`Trajectory`> | read-only |
+| Mips6Trajectory | `Pointer` <`Trajectory`> | read-only |
+| Mips7Trajectory | `Pointer` <`Trajectory`> | read-only |
+| Mips8Trajectory | `Pointer` <`Trajectory`> | read-only |
+| Mips9Trajectory | `Pointer` <`Trajectory`> | read-only |
+| MipsTrajectory | `Pointer` <`Trajectory`> | read-only |
+| PlatformBitfsTrajectory | `Pointer` <`Trajectory`> | read-only |
+| PlatformCcmTrajectory | `Pointer` <`Trajectory`> | read-only |
+| PlatformHmcTrajectory | `Pointer` <`Trajectory`> | read-only |
+| PlatformLll2Trajectory | `Pointer` <`Trajectory`> | read-only |
+| PlatformLllTrajectory | `Pointer` <`Trajectory`> | read-only |
+| PlatformRr2Trajectory | `Pointer` <`Trajectory`> | read-only |
+| PlatformRr3Trajectory | `Pointer` <`Trajectory`> | read-only |
+| PlatformRr4Trajectory | `Pointer` <`Trajectory`> | read-only |
+| PlatformRrTrajectory | `Pointer` <`Trajectory`> | read-only |
+| RacingPenguinTrajectory | `Pointer` <`Trajectory`> | read-only |
+| SnowmanHeadTrajectory | `Pointer` <`Trajectory`> | read-only |
+| Unagi2Trajectory | `Pointer` <`Trajectory`> | read-only |
+| UnagiTrajectory | `Pointer` <`Trajectory`> | read-only |
+
+[:arrow_up_small:](#)
+
+
+
+## [BehaviorValues](#BehaviorValues)
+
+| Field | Type | Access |
+| ----- | ---- | ------ |
+| trajectories | [BehaviorTrajectories](structs.md#BehaviorTrajectories) | read-only |
+
+[:arrow_up_small:](#)
+
+
+
## [BullyCollisionData](#BullyCollisionData)
| Field | Type | Access |
diff --git a/levels/castle_inside/areas/3/trajectory.inc.c b/levels/castle_inside/areas/3/trajectory.inc.c
index 2175078d4..bf4562764 100644
--- a/levels/castle_inside/areas/3/trajectory.inc.c
+++ b/levels/castle_inside/areas/3/trajectory.inc.c
@@ -1,5 +1,5 @@
// 0x07078EF8 - 0x07078F2C
-static const Trajectory inside_castle_seg7_trajectory_mips_0[] = {
+const Trajectory inside_castle_seg7_trajectory_mips_0[] = {
TRAJECTORY_POS(0, /*pos*/ -1831, -1177, -1178),
TRAJECTORY_POS(1, /*pos*/ -1810, -1177, 284),
TRAJECTORY_POS(2, /*pos*/ -2210, -1192, 715),
@@ -10,7 +10,7 @@ static const Trajectory inside_castle_seg7_trajectory_mips_0[] = {
};
// 0x07078F2C - 0x07078F68
-static const Trajectory inside_castle_seg7_trajectory_mips_1[] = {
+const Trajectory inside_castle_seg7_trajectory_mips_1[] = {
TRAJECTORY_POS(0, /*pos*/ -3674, -1379, -962),
TRAJECTORY_POS(1, /*pos*/ -3813, -1279, -41),
TRAJECTORY_POS(2, /*pos*/ -3628, -1279, 755),
@@ -22,14 +22,14 @@ static const Trajectory inside_castle_seg7_trajectory_mips_1[] = {
};
// 0x07078F68 - 0x07078F7C
-static const Trajectory inside_castle_seg7_trajectory_mips_2[] = {
+const Trajectory inside_castle_seg7_trajectory_mips_2[] = {
TRAJECTORY_POS(0, /*pos*/ -1463, -1210, -2231),
TRAJECTORY_POS(1, /*pos*/ -1515, -1279, -3094),
TRAJECTORY_END(),
};
// 0x07078F7C - 0x07078FA8
-static const Trajectory inside_castle_seg7_trajectory_mips_3[] = {
+const Trajectory inside_castle_seg7_trajectory_mips_3[] = {
TRAJECTORY_POS(0, /*pos*/ -2019, -1279, -3077),
TRAJECTORY_POS(1, /*pos*/ -2559, -1279, -3043),
TRAJECTORY_POS(2, /*pos*/ -2957, -1279, -2747),
@@ -39,7 +39,7 @@ static const Trajectory inside_castle_seg7_trajectory_mips_3[] = {
};
// 0x07078FA8 - 0x07078FD4
-static const Trajectory inside_castle_seg7_trajectory_mips_4[] = {
+const Trajectory inside_castle_seg7_trajectory_mips_4[] = {
TRAJECTORY_POS(0, /*pos*/ -3005, -1197, -1874),
TRAJECTORY_POS(1, /*pos*/ -2967, -1279, -2582),
TRAJECTORY_POS(2, /*pos*/ -2559, -1279, -3043),
@@ -49,14 +49,14 @@ static const Trajectory inside_castle_seg7_trajectory_mips_4[] = {
};
// 0x07078FD4 - 0x07078FE8
-static const Trajectory inside_castle_seg7_trajectory_mips_5[] = {
+const Trajectory inside_castle_seg7_trajectory_mips_5[] = {
TRAJECTORY_POS(0, /*pos*/ -1387, -1254, -2541),
TRAJECTORY_POS(1, /*pos*/ -1541, -1177, -1446),
TRAJECTORY_END(),
};
// 0x07078FE8 - 0x07079004
-static const Trajectory inside_castle_seg7_trajectory_mips_6[] = {
+const Trajectory inside_castle_seg7_trajectory_mips_6[] = {
TRAJECTORY_POS(0, /*pos*/ -894, -1223, -1421),
TRAJECTORY_POS(1, /*pos*/ -306, -1279, -1601),
TRAJECTORY_POS(2, /*pos*/ -192, -1279, -2196),
@@ -64,7 +64,7 @@ static const Trajectory inside_castle_seg7_trajectory_mips_6[] = {
};
// 0x07079004 - 0x07079020
-static const Trajectory inside_castle_seg7_trajectory_mips_7[] = {
+const Trajectory inside_castle_seg7_trajectory_mips_7[] = {
TRAJECTORY_POS(0, /*pos*/ -187, -1279, -1662),
TRAJECTORY_POS(1, /*pos*/ -805, -1238, -1406),
TRAJECTORY_POS(2, /*pos*/ -1549, -1177, -1446),
@@ -72,7 +72,7 @@ static const Trajectory inside_castle_seg7_trajectory_mips_7[] = {
};
// 0x07079020 - 0x07079044
-static const Trajectory inside_castle_seg7_trajectory_mips_8[] = {
+const Trajectory inside_castle_seg7_trajectory_mips_8[] = {
TRAJECTORY_POS(0, /*pos*/ -1092, -1279, -3188),
TRAJECTORY_POS(1, /*pos*/ -593, -1279, -3175),
TRAJECTORY_POS(2, /*pos*/ -200, -1279, -2940),
@@ -81,19 +81,10 @@ static const Trajectory inside_castle_seg7_trajectory_mips_8[] = {
};
// 0x07079044 - 0x07079068
-static const Trajectory inside_castle_seg7_trajectory_mips_9[] = {
+const Trajectory inside_castle_seg7_trajectory_mips_9[] = {
TRAJECTORY_POS(0, /*pos*/ -214, -1279, -2432),
TRAJECTORY_POS(1, /*pos*/ -160, -1283, -2900),
TRAJECTORY_POS(2, /*pos*/ -640, -1283, -3220),
TRAJECTORY_POS(3, /*pos*/ -1469, -1279, -3108),
TRAJECTORY_END(),
};
-
-// 0x07079068 - 0x07079090
-const Trajectory *const inside_castle_seg7_trajectory_mips[] = {
- inside_castle_seg7_trajectory_mips_0, inside_castle_seg7_trajectory_mips_1,
- inside_castle_seg7_trajectory_mips_2, inside_castle_seg7_trajectory_mips_3,
- inside_castle_seg7_trajectory_mips_4, inside_castle_seg7_trajectory_mips_5,
- inside_castle_seg7_trajectory_mips_6, inside_castle_seg7_trajectory_mips_7,
- inside_castle_seg7_trajectory_mips_8, inside_castle_seg7_trajectory_mips_9,
-};
diff --git a/levels/castle_inside/header.h b/levels/castle_inside/header.h
index dfd639230..285d84cbf 100644
--- a/levels/castle_inside/header.h
+++ b/levels/castle_inside/header.h
@@ -147,9 +147,18 @@ extern const u8 inside_castle_seg7_area_3_rooms[];
extern const Collision inside_castle_seg7_collision_floor_trap[];
extern const Collision inside_castle_seg7_collision_star_door[];
extern const Collision inside_castle_seg7_collision_water_level_pillar[];
-extern const Trajectory *const inside_castle_seg7_trajectory_mips[];
extern const struct MovtexQuadCollection inside_castle_movtex_green_room_water[];
extern const struct MovtexQuadCollection inside_castle_movtex_moat_water[];
+extern const Trajectory inside_castle_seg7_trajectory_mips_0[];
+extern const Trajectory inside_castle_seg7_trajectory_mips_1[];
+extern const Trajectory inside_castle_seg7_trajectory_mips_2[];
+extern const Trajectory inside_castle_seg7_trajectory_mips_3[];
+extern const Trajectory inside_castle_seg7_trajectory_mips_4[];
+extern const Trajectory inside_castle_seg7_trajectory_mips_5[];
+extern const Trajectory inside_castle_seg7_trajectory_mips_6[];
+extern const Trajectory inside_castle_seg7_trajectory_mips_7[];
+extern const Trajectory inside_castle_seg7_trajectory_mips_8[];
+extern const Trajectory inside_castle_seg7_trajectory_mips_9[];
// script
extern const LevelScript level_castle_inside_entry[];
diff --git a/src/game/behaviors/bowling_ball.inc.c b/src/game/behaviors/bowling_ball.inc.c
index e614a67e9..024a46273 100644
--- a/src/game/behaviors/bowling_ball.inc.c
+++ b/src/game/behaviors/bowling_ball.inc.c
@@ -55,15 +55,15 @@ void bowling_ball_set_hitbox(void) {
void bowling_ball_set_waypoints(void) {
switch (o->oBehParams2ndByte) {
case BBALL_BP_STYPE_BOB_UPPER:
- o->oPathedStartWaypoint = segmented_to_virtual(bob_seg7_metal_ball_path0);
+ o->oPathedStartWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.BowlingBallBobTrajectory);
break;
case BBALL_BP_STYPE_TTM:
- o->oPathedStartWaypoint = segmented_to_virtual(ttm_seg7_trajectory_070170A0);
+ o->oPathedStartWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.BowlingBallTtmTrajectory);
break;
case BBALL_BP_STYPE_BOB_LOWER:
- o->oPathedStartWaypoint = segmented_to_virtual(bob_seg7_metal_ball_path1);
+ o->oPathedStartWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.BowlingBallBob2Trajectory);
break;
case BBALL_BP_STYPE_THI_LARGE:
diff --git a/src/game/behaviors/koopa.inc.c b/src/game/behaviors/koopa.inc.c
index 174d1686c..7763031c8 100644
--- a/src/game/behaviors/koopa.inc.c
+++ b/src/game/behaviors/koopa.inc.c
@@ -53,16 +53,14 @@ static u8 sKoopaShelledAttackHandlers[] = {
struct KoopaTheQuickProperties {
s16 initText;
s16 winText;
- void const *path;
- Vec3s starPos;
};
/**
* Properties for the BoB race and the THI race.
*/
static struct KoopaTheQuickProperties sKoopaTheQuickProperties[] = {
- { DIALOG_005, DIALOG_007, bob_seg7_trajectory_koopa, { 3030, 4500, -4600 } },
- { DIALOG_009, DIALOG_031, thi_seg7_trajectory_koopa, { 7100, -1300, -6000 } }
+ { DIALOG_005, DIALOG_007 },
+ { DIALOG_009, DIALOG_031 }
};
static u32 koopaPathedStartWaypoint = 0;
@@ -70,14 +68,18 @@ static u32 koopaPathedPrevWaypoint = 0;
static u32 koopaShotFromCannon = 0;
static void bhv_koopa_the_quick_on_received_post(UNUSED u8 fromLocalIndex) {
- void* path = segmented_to_virtual(sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].path);
+ void* path = (o->oKoopaTheQuickRaceIndex == 0)
+ ? (void*) gBehaviorValues.trajectories.KoopaBobTrajectory
+ : (void*) gBehaviorValues.trajectories.KoopaThiTrajectory;
o->oPathedStartWaypoint = (struct Waypoint*)path + koopaPathedStartWaypoint;
o->oPathedPrevWaypoint = (struct Waypoint*)path + koopaPathedPrevWaypoint;
gMarioShotFromCannon = koopaShotFromCannon;
}
static void bhv_koopa_the_quick_on_sent_pre(void) {
- void* path = segmented_to_virtual(sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].path);
+ void* path = (o->oKoopaTheQuickRaceIndex == 0)
+ ? (void*) gBehaviorValues.trajectories.KoopaBobTrajectory
+ : (void*) gBehaviorValues.trajectories.KoopaThiTrajectory;
koopaPathedStartWaypoint = ((void*)o->oPathedStartWaypoint - path) / sizeof(struct Waypoint*);
koopaPathedPrevWaypoint = ((void*)o->oPathedPrevWaypoint - path) / sizeof(struct Waypoint*);
koopaShotFromCannon = gMarioShotFromCannon;
@@ -638,8 +640,9 @@ static void koopa_the_quick_act_show_init_text(void) {
o->oForwardVel = 0.0f;
o->parentObj = cur_obj_nearest_object_with_behavior(bhvKoopaRaceEndpoint);
- o->oPathedStartWaypoint = o->oPathedPrevWaypoint =
- segmented_to_virtual(sKoopaTheQuickProperties[o->oKoopaTheQuickRaceIndex].path);
+ o->oPathedStartWaypoint = o->oPathedPrevWaypoint = (o->oKoopaTheQuickRaceIndex == 0)
+ ? (struct Waypoint*) gBehaviorValues.trajectories.KoopaBobTrajectory
+ : (struct Waypoint*) gBehaviorValues.trajectories.KoopaThiTrajectory;
o->oKoopaTurningAwayFromWall = FALSE;
o->oFlags |= OBJ_FLAG_ACTIVE_FROM_AFAR;
diff --git a/src/game/behaviors/mips.inc.c b/src/game/behaviors/mips.inc.c
index 10c864052..9a8ff0269 100644
--- a/src/game/behaviors/mips.inc.c
+++ b/src/game/behaviors/mips.inc.c
@@ -2,6 +2,19 @@
* Behavior for MIPS (everyone's favorite yellow rabbit).
*/
+static const Trajectory** sMipsPaths[] = {
+ &gBehaviorValues.trajectories.MipsTrajectory,
+ &gBehaviorValues.trajectories.Mips2Trajectory,
+ &gBehaviorValues.trajectories.Mips3Trajectory,
+ &gBehaviorValues.trajectories.Mips4Trajectory,
+ &gBehaviorValues.trajectories.Mips5Trajectory,
+ &gBehaviorValues.trajectories.Mips6Trajectory,
+ &gBehaviorValues.trajectories.Mips7Trajectory,
+ &gBehaviorValues.trajectories.Mips8Trajectory,
+ &gBehaviorValues.trajectories.Mips9Trajectory,
+ &gBehaviorValues.trajectories.Mips10Trajectory,
+};
+
static u32 mipsPrevHeldState = 0;
static void bhv_mips_on_received_pre(UNUSED u8 fromLocalIndex) {
@@ -77,16 +90,13 @@ s16 bhv_mips_find_furthest_waypoint_to_mario(void) {
s16 furthestWaypointIndex = -1;
f32 furthestWaypointDistance = -10000.0f;
f32 distanceToMario;
- struct Waypoint **pathBase;
struct Waypoint *waypoint;
- pathBase = segmented_to_virtual(&inside_castle_seg7_trajectory_mips);
-
struct Object* player = nearest_player_to_object(o);
// For each waypoint in MIPS path...
for (i = 0; i < 10; i++) {
- waypoint = segmented_to_virtual(pathBase[i]);
+ waypoint = segmented_to_virtual(*sMipsPaths[i]);
x = waypoint->pos[0];
y = waypoint->pos[1];
z = waypoint->pos[2];
@@ -136,12 +146,12 @@ void bhv_mips_act_wait_for_nearby_mario(void) {
void bhv_mips_act_follow_path(void) {
s16 collisionFlags = 0;
s32 followStatus = 0;
- struct Waypoint **pathBase;
+ struct Waypoint ***pathBase;
struct Waypoint *waypoint;
// Retrieve current waypoint.
- pathBase = segmented_to_virtual(&inside_castle_seg7_trajectory_mips);
- waypoint = segmented_to_virtual(*(pathBase + o->oMipsStartWaypointIndex));
+ pathBase = segmented_to_virtual(sMipsPaths);
+ waypoint = segmented_to_virtual(*(*pathBase + o->oMipsStartWaypointIndex));
// Set start waypoint and follow the path from there.
o->oPathedStartWaypoint = waypoint;
diff --git a/src/game/behaviors/platform_on_track.inc.c b/src/game/behaviors/platform_on_track.inc.c
index 38f4afd03..c123b133c 100644
--- a/src/game/behaviors/platform_on_track.inc.c
+++ b/src/game/behaviors/platform_on_track.inc.c
@@ -18,10 +18,16 @@ static void const *sPlatformOnTrackCollisionModels[] = {
/**
* Paths for the different instances of these platforms.
*/
-static void const *sPlatformOnTrackPaths[] = {
- rr_seg7_trajectory_0702EC3C, rr_seg7_trajectory_0702ECC0, ccm_seg7_trajectory_0701669C,
- bitfs_seg7_trajectory_070159AC, hmc_seg7_trajectory_0702B86C, lll_seg7_trajectory_0702856C,
- lll_seg7_trajectory_07028660, rr_seg7_trajectory_0702ED9C, rr_seg7_trajectory_0702EEE0,
+static const Trajectory** sPlatformOnTrackPaths[] = {
+ &gBehaviorValues.trajectories.PlatformRrTrajectory,
+ &gBehaviorValues.trajectories.PlatformRr2Trajectory,
+ &gBehaviorValues.trajectories.PlatformCcmTrajectory,
+ &gBehaviorValues.trajectories.PlatformBitfsTrajectory,
+ &gBehaviorValues.trajectories.PlatformHmcTrajectory,
+ &gBehaviorValues.trajectories.PlatformLllTrajectory,
+ &gBehaviorValues.trajectories.PlatformLll2Trajectory,
+ &gBehaviorValues.trajectories.PlatformRr3Trajectory,
+ &gBehaviorValues.trajectories.PlatformRr4Trajectory,
};
/**
@@ -90,7 +96,7 @@ void bhv_platform_on_track_init(void) {
o->collisionData =
segmented_to_virtual(sPlatformOnTrackCollisionModels[o->oPlatformOnTrackType]);
- o->oPlatformOnTrackStartWaypoint = segmented_to_virtual(sPlatformOnTrackPaths[pathIndex]);
+ o->oPlatformOnTrackStartWaypoint = segmented_to_virtual(*sPlatformOnTrackPaths[pathIndex]);
o->oPlatformOnTrackIsNotHMC = pathIndex - 4;
diff --git a/src/game/behaviors/racing_penguin.inc.c b/src/game/behaviors/racing_penguin.inc.c
index a81db9466..87490ac05 100644
--- a/src/game/behaviors/racing_penguin.inc.c
+++ b/src/game/behaviors/racing_penguin.inc.c
@@ -13,13 +13,13 @@ static u32 penguinPathedStartWaypoint = 0;
static u32 penguinPathedPrevWaypoint = 0;
static void bhv_racing_penguin_the_quick_on_received_post(UNUSED u8 fromLocalIndex) {
- void* path = segmented_to_virtual(ccm_seg7_trajectory_penguin_race);
+ void* path = segmented_to_virtual(gBehaviorValues.trajectories.RacingPenguinTrajectory);
o->oPathedStartWaypoint = (struct Waypoint*)path + penguinPathedStartWaypoint;
o->oPathedPrevWaypoint = (struct Waypoint*)path + penguinPathedPrevWaypoint;
}
static void bhv_racing_penguin_the_quick_on_sent_pre(void) {
- void* path = segmented_to_virtual(ccm_seg7_trajectory_penguin_race);
+ void* path = segmented_to_virtual(gBehaviorValues.trajectories.RacingPenguinTrajectory);
penguinPathedStartWaypoint = ((void*)o->oPathedStartWaypoint - path) / sizeof(struct Waypoint*);
penguinPathedPrevWaypoint = ((void*)o->oPathedPrevWaypoint - path) / sizeof(struct Waypoint*);
}
@@ -105,7 +105,7 @@ static void racing_penguin_act_show_init_text(void) {
child->parentObj = o;
o->oPathedStartWaypoint = o->oPathedPrevWaypoint =
- segmented_to_virtual(ccm_seg7_trajectory_penguin_race);
+ segmented_to_virtual(gBehaviorValues.trajectories.RacingPenguinTrajectory);
o->oPathedPrevWaypointFlags = 0;
o->oAction = RACING_PENGUIN_ACT_PREPARE_FOR_RACE;
@@ -141,7 +141,7 @@ static void racing_penguin_act_race(void) {
child = cur_obj_nearest_object_with_behavior(bhvPenguinRaceShortcutCheck);
child->parentObj = o;
- o->oPathedStartWaypoint = o->oPathedPrevWaypoint = segmented_to_virtual(ccm_seg7_trajectory_penguin_race);
+ o->oPathedStartWaypoint = o->oPathedPrevWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.RacingPenguinTrajectory);
o->oPathedPrevWaypointFlags = 0;
}
diff --git a/src/game/behaviors/snowman.inc.c b/src/game/behaviors/snowman.inc.c
index cf300226d..403280233 100644
--- a/src/game/behaviors/snowman.inc.c
+++ b/src/game/behaviors/snowman.inc.c
@@ -62,7 +62,7 @@ void snowmans_bottom_act_1(void) {
s32 sp20 = 0;
UNUSED s16 sp1E;
- o->oPathedStartWaypoint = segmented_to_virtual(&ccm_seg7_trajectory_snowman);
+ o->oPathedStartWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.SnowmanHeadTrajectory);
sp26 = object_step_without_floor_orient();
sp20 = cur_obj_follow_path(sp20);
o->oSnowmansBottomUnkF8 = o->oPathedTargetYaw;
diff --git a/src/game/behaviors/unagi.inc.c b/src/game/behaviors/unagi.inc.c
index c726ed398..b360292c6 100644
--- a/src/game/behaviors/unagi.inc.c
+++ b/src/game/behaviors/unagi.inc.c
@@ -14,14 +14,14 @@ struct ObjectHitbox sUnagiHitbox = {
void bhv_unagi_init(void) {
if (o->oBehParams2ndByte != 1) {
- o->oPathedStartWaypoint = segmented_to_virtual(jrb_seg7_trajectory_unagi_1);
+ o->oPathedStartWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.UnagiTrajectory);
if (o->oBehParams2ndByte == 0) {
o->oFaceAnglePitch = -7600;
} else {
o->oAction = 1;
}
} else {
- o->oPathedStartWaypoint = segmented_to_virtual(jrb_seg7_trajectory_unagi_2);
+ o->oPathedStartWaypoint = segmented_to_virtual(gBehaviorValues.trajectories.Unagi2Trajectory);
o->oAction = 3;
o->oAnimState = 1;
diff --git a/src/game/hardcoded.c b/src/game/hardcoded.c
index e65a00ece..3027f689a 100644
--- a/src/game/hardcoded.c
+++ b/src/game/hardcoded.c
@@ -1,5 +1,42 @@
#include "hardcoded.h"
+#include "levels/bbh/header.h"
+#include "levels/bitdw/header.h"
+#include "levels/bitfs/header.h"
+#include "levels/bits/header.h"
+#include "levels/bob/header.h"
+#include "levels/bowser_1/header.h"
+#include "levels/bowser_2/header.h"
+#include "levels/bowser_2/header.h"
+#include "levels/bowser_3/header.h"
+#include "levels/bowser_3/header.h"
+#include "levels/castle_courtyard/header.h"
+#include "levels/castle_grounds/header.h"
+#include "levels/castle_inside/header.h"
+#include "levels/ccm/header.h"
+#include "levels/cotmc/header.h"
+#include "levels/ddd/header.h"
+#include "levels/hmc/header.h"
+#include "levels/jrb/header.h"
+#include "levels/lll/header.h"
+#include "levels/pss/header.h"
+#include "levels/rr/header.h"
+#include "levels/sa/header.h"
+#include "levels/sl/header.h"
+#include "levels/ssl/header.h"
+#include "levels/thi/header.h"
+#include "levels/totwc/header.h"
+#include "levels/ttc/header.h"
+#include "levels/ttm/header.h"
+#include "levels/vcutm/header.h"
+#include "levels/wdw/header.h"
+#include "levels/wf/header.h"
+#include "levels/wmotr/header.h"
+
+ ////////////
+ // Levels //
+////////////
+
struct LevelValues gLevelValues = {
.entryLevel = LEVEL_CASTLE_GROUNDS,
.starPositions = {
@@ -35,3 +72,40 @@ struct LevelValues gLevelValues = {
.JetstreamRingStarPos = { 3400.0f, -3200.0f, -500.0f },
},
};
+
+ ///////////////
+ // Behaviors //
+///////////////
+
+struct BehaviorValues gBehaviorValues = {
+ .trajectories = {
+ .KoopaBobTrajectory = bob_seg7_trajectory_koopa,
+ .KoopaThiTrajectory = thi_seg7_trajectory_koopa,
+ .UnagiTrajectory = jrb_seg7_trajectory_unagi_1,
+ .Unagi2Trajectory = jrb_seg7_trajectory_unagi_2,
+ .SnowmanHeadTrajectory = ccm_seg7_trajectory_snowman,
+ .RacingPenguinTrajectory = ccm_seg7_trajectory_penguin_race,
+ .BowlingBallBobTrajectory = bob_seg7_metal_ball_path0,
+ .BowlingBallBob2Trajectory = bob_seg7_metal_ball_path1,
+ .BowlingBallTtmTrajectory = ttm_seg7_trajectory_070170A0,
+ .MipsTrajectory = inside_castle_seg7_trajectory_mips_0,
+ .Mips2Trajectory = inside_castle_seg7_trajectory_mips_1,
+ .Mips3Trajectory = inside_castle_seg7_trajectory_mips_2,
+ .Mips4Trajectory = inside_castle_seg7_trajectory_mips_3,
+ .Mips5Trajectory = inside_castle_seg7_trajectory_mips_4,
+ .Mips6Trajectory = inside_castle_seg7_trajectory_mips_5,
+ .Mips7Trajectory = inside_castle_seg7_trajectory_mips_6,
+ .Mips8Trajectory = inside_castle_seg7_trajectory_mips_7,
+ .Mips9Trajectory = inside_castle_seg7_trajectory_mips_8,
+ .Mips10Trajectory = inside_castle_seg7_trajectory_mips_9,
+ .PlatformRrTrajectory = rr_seg7_trajectory_0702EC3C,
+ .PlatformRr2Trajectory = rr_seg7_trajectory_0702ECC0,
+ .PlatformRr3Trajectory = rr_seg7_trajectory_0702ED9C,
+ .PlatformRr4Trajectory = rr_seg7_trajectory_0702EEE0,
+ .PlatformCcmTrajectory = ccm_seg7_trajectory_0701669C,
+ .PlatformBitfsTrajectory = bitfs_seg7_trajectory_070159AC,
+ .PlatformHmcTrajectory = hmc_seg7_trajectory_0702B86C,
+ .PlatformLllTrajectory = lll_seg7_trajectory_0702856C,
+ .PlatformLll2Trajectory = lll_seg7_trajectory_07028660,
+ },
+};
diff --git a/src/game/hardcoded.h b/src/game/hardcoded.h
index eab461fc3..9ab86e71f 100644
--- a/src/game/hardcoded.h
+++ b/src/game/hardcoded.h
@@ -2,6 +2,10 @@
#include "types.h"
#include "level_table.h"
+ ////////////
+ // Levels //
+////////////
+
struct StarPositions {
Vec3f KoopaBobStarPos;
Vec3f KoopaThiStarPos;
@@ -38,4 +42,45 @@ struct LevelValues {
extern struct LevelValues gLevelValues;
+ ///////////////
+ // Behaviors //
+///////////////
+
+struct BehaviorTrajectories {
+ const Trajectory* KoopaBobTrajectory;
+ const Trajectory* KoopaThiTrajectory;
+ const Trajectory* UnagiTrajectory;
+ const Trajectory* Unagi2Trajectory;
+ const Trajectory* SnowmanHeadTrajectory;
+ const Trajectory* RacingPenguinTrajectory;
+ const Trajectory* BowlingBallBobTrajectory;
+ const Trajectory* BowlingBallBob2Trajectory;
+ const Trajectory* BowlingBallTtmTrajectory;
+ const Trajectory* MipsTrajectory;
+ const Trajectory* Mips2Trajectory;
+ const Trajectory* Mips3Trajectory;
+ const Trajectory* Mips4Trajectory;
+ const Trajectory* Mips5Trajectory;
+ const Trajectory* Mips6Trajectory;
+ const Trajectory* Mips7Trajectory;
+ const Trajectory* Mips8Trajectory;
+ const Trajectory* Mips9Trajectory;
+ const Trajectory* Mips10Trajectory;
+ const Trajectory* PlatformRrTrajectory;
+ const Trajectory* PlatformRr2Trajectory;
+ const Trajectory* PlatformRr3Trajectory;
+ const Trajectory* PlatformRr4Trajectory;
+ const Trajectory* PlatformCcmTrajectory;
+ const Trajectory* PlatformBitfsTrajectory;
+ const Trajectory* PlatformHmcTrajectory;
+ const Trajectory* PlatformLllTrajectory;
+ const Trajectory* PlatformLll2Trajectory;
+};
+
+struct BehaviorValues {
+ struct BehaviorTrajectories trajectories;
+};
+
+extern struct BehaviorValues gBehaviorValues;
+
#endif
\ No newline at end of file
diff --git a/src/game/obj_behaviors.c b/src/game/obj_behaviors.c
index 9ce0ea065..fb81e5ac4 100644
--- a/src/game/obj_behaviors.c
+++ b/src/game/obj_behaviors.c
@@ -75,9 +75,6 @@ s16 sPrevCheckMarioRoom = 0;
*/
s8 sYoshiDead = FALSE;
-extern void *ccm_seg7_trajectory_snowman;
-extern void *inside_castle_seg7_trajectory_mips;
-
/**
* Resets yoshi as spawned/despawned upon new file select.
* Possibly a function with stubbed code.
diff --git a/src/pc/lua/smlua_cobject.c b/src/pc/lua/smlua_cobject.c
index 0b32be49e..005e3bbd2 100644
--- a/src/pc/lua/smlua_cobject.c
+++ b/src/pc/lua/smlua_cobject.c
@@ -361,22 +361,23 @@ static int smlua__get_field(lua_State* L) {
u8* p = ((u8*)(intptr_t)pointer) + data->valueOffset;
switch (data->valueType) {
- case LVT_BOOL: lua_pushboolean(L, *(u8* )p); break;
- case LVT_U8: lua_pushinteger(L, *(u8* )p); break;
- case LVT_U16: lua_pushinteger(L, *(u16*)p); break;
- case LVT_U32: lua_pushinteger(L, *(u32*)p); break;
- case LVT_S8: lua_pushinteger(L, *(s8* )p); break;
- case LVT_S16: lua_pushinteger(L, *(s16*)p); break;
- case LVT_S32: lua_pushinteger(L, *(s32*)p); break;
- case LVT_F32: lua_pushnumber( L, *(f32*)p); break;
- case LVT_COBJECT: smlua_push_object(L, data->lot, p); break;
- case LVT_COBJECT_P: smlua_push_object(L, data->lot, *(u8**)p); break;
- case LVT_STRING: lua_pushstring(L, (char*)p); break;
- case LVT_STRING_P: lua_pushstring(L, *(char**)p); break;
- case LVT_BEHAVIORSCRIPT: lua_pushinteger(L, *(s32*)p); break;
- case LVT_OBJECTANIMPOINTER: lua_pushinteger(L, *(s32*)p); break;
- case LVT_COLLISION: lua_pushinteger(L, *(s32*)p); break;
- case LVT_LEVELSCRIPT: lua_pushinteger(L, *(s32*)p); break;
+ case LVT_BOOL: lua_pushboolean(L, *(u8* )p); break;
+ case LVT_U8: lua_pushinteger(L, *(u8* )p); break;
+ case LVT_U16: lua_pushinteger(L, *(u16*)p); break;
+ case LVT_U32: lua_pushinteger(L, *(u32*)p); break;
+ case LVT_S8: lua_pushinteger(L, *(s8* )p); break;
+ case LVT_S16: lua_pushinteger(L, *(s16*)p); break;
+ case LVT_S32: lua_pushinteger(L, *(s32*)p); break;
+ case LVT_F32: lua_pushnumber( L, *(f32*)p); break;
+ case LVT_COBJECT: smlua_push_object(L, data->lot, p); break;
+ case LVT_COBJECT_P: smlua_push_object(L, data->lot, *(u8**)p); break;
+ case LVT_STRING: lua_pushstring(L, (char*)p); break;
+ case LVT_STRING_P: lua_pushstring(L, *(char**)p); break;
+ case LVT_BEHAVIORSCRIPT: lua_pushinteger(L, *(s32*)p); break;
+ case LVT_OBJECTANIMPOINTER: lua_pushinteger(L, *(s32*)p); break;
+ case LVT_COLLISION: lua_pushinteger(L, *(s32*)p); break;
+ case LVT_LEVELSCRIPT: lua_pushinteger(L, *(s32*)p); break;
+ case LVT_TRAJECTORY: lua_pushinteger(L, *(s16*)p); break;
// pointers
case LVT_U8_P:
@@ -390,6 +391,7 @@ static int smlua__get_field(lua_State* L) {
case LVT_OBJECTANIMPOINTER_P:
case LVT_COLLISION_P:
case LVT_LEVELSCRIPT_P:
+ case LVT_TRAJECTORY_P:
smlua_push_pointer(L, data->valueType, *(u8**)p);
break;
@@ -571,6 +573,11 @@ void smlua_cobject_init_globals(void) {
lua_setglobal(L, "gLevelValues");
}
+ {
+ smlua_push_object(L, LOT_BEHAVIORVALUES, &gBehaviorValues);
+ lua_setglobal(L, "gBehaviorValues");
+ }
+
}
void smlua_cobject_init_per_file_globals(char* path) {
diff --git a/src/pc/lua/smlua_cobject.h b/src/pc/lua/smlua_cobject.h
index fc1de99a5..cf9acd7c2 100644
--- a/src/pc/lua/smlua_cobject.h
+++ b/src/pc/lua/smlua_cobject.h
@@ -29,6 +29,8 @@ enum LuaValueType {
LVT_COLLISION_P,
LVT_LEVELSCRIPT,
LVT_LEVELSCRIPT_P,
+ LVT_TRAJECTORY,
+ LVT_TRAJECTORY_P,
LVT_LUAFUNCTION,
LVT_POINTER,
LVT_MAX,
diff --git a/src/pc/lua/smlua_cobject_autogen.c b/src/pc/lua/smlua_cobject_autogen.c
index a16f3eaed..2c0bc85e7 100644
--- a/src/pc/lua/smlua_cobject_autogen.c
+++ b/src/pc/lua/smlua_cobject_autogen.c
@@ -72,6 +72,43 @@ static struct LuaObjectField sAreaFields[LUA_AREA_FIELD_COUNT] = {
// { "whirlpools", LOT_???, offsetof(struct Area, whirlpools), false, LOT_??? }, <--- UNIMPLEMENTED
};
+#define LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT 28
+static struct LuaObjectField sBehaviorTrajectoriesFields[LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT] = {
+ { "BowlingBallBob2Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, BowlingBallBob2Trajectory), true, LOT_POINTER },
+ { "BowlingBallBobTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, BowlingBallBobTrajectory), true, LOT_POINTER },
+ { "BowlingBallTtmTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, BowlingBallTtmTrajectory), true, LOT_POINTER },
+ { "KoopaBobTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, KoopaBobTrajectory), true, LOT_POINTER },
+ { "KoopaThiTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, KoopaThiTrajectory), true, LOT_POINTER },
+ { "Mips10Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips10Trajectory), true, LOT_POINTER },
+ { "Mips2Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips2Trajectory), true, LOT_POINTER },
+ { "Mips3Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips3Trajectory), true, LOT_POINTER },
+ { "Mips4Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips4Trajectory), true, LOT_POINTER },
+ { "Mips5Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips5Trajectory), true, LOT_POINTER },
+ { "Mips6Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips6Trajectory), true, LOT_POINTER },
+ { "Mips7Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips7Trajectory), true, LOT_POINTER },
+ { "Mips8Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips8Trajectory), true, LOT_POINTER },
+ { "Mips9Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Mips9Trajectory), true, LOT_POINTER },
+ { "MipsTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, MipsTrajectory), true, LOT_POINTER },
+ { "PlatformBitfsTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformBitfsTrajectory), true, LOT_POINTER },
+ { "PlatformCcmTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformCcmTrajectory), true, LOT_POINTER },
+ { "PlatformHmcTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformHmcTrajectory), true, LOT_POINTER },
+ { "PlatformLll2Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformLll2Trajectory), true, LOT_POINTER },
+ { "PlatformLllTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformLllTrajectory), true, LOT_POINTER },
+ { "PlatformRr2Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformRr2Trajectory), true, LOT_POINTER },
+ { "PlatformRr3Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformRr3Trajectory), true, LOT_POINTER },
+ { "PlatformRr4Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformRr4Trajectory), true, LOT_POINTER },
+ { "PlatformRrTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, PlatformRrTrajectory), true, LOT_POINTER },
+ { "RacingPenguinTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, RacingPenguinTrajectory), true, LOT_POINTER },
+ { "SnowmanHeadTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, SnowmanHeadTrajectory), true, LOT_POINTER },
+ { "Unagi2Trajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, Unagi2Trajectory), true, LOT_POINTER },
+ { "UnagiTrajectory", LVT_TRAJECTORY_P, offsetof(struct BehaviorTrajectories, UnagiTrajectory), true, LOT_POINTER },
+};
+
+#define LUA_BEHAVIOR_VALUES_FIELD_COUNT 1
+static struct LuaObjectField sBehaviorValuesFields[LUA_BEHAVIOR_VALUES_FIELD_COUNT] = {
+ { "trajectories", LVT_COBJECT, offsetof(struct BehaviorValues, trajectories), true, LOT_BEHAVIORTRAJECTORIES },
+};
+
#define LUA_BULLY_COLLISION_DATA_FIELD_COUNT 6
static struct LuaObjectField sBullyCollisionDataFields[LUA_BULLY_COLLISION_DATA_FIELD_COUNT] = {
{ "conversionRatio", LVT_F32, offsetof(struct BullyCollisionData, conversionRatio), false, LOT_NONE },
@@ -1735,6 +1772,8 @@ struct LuaObjectTable sLuaObjectAutogenTable[LOT_AUTOGEN_MAX - LOT_AUTOGEN_MIN]
{ LOT_ANIMINFO, sAnimInfoFields, LUA_ANIM_INFO_FIELD_COUNT },
{ LOT_ANIMATION, sAnimationFields, LUA_ANIMATION_FIELD_COUNT },
{ LOT_AREA, sAreaFields, LUA_AREA_FIELD_COUNT },
+ { LOT_BEHAVIORTRAJECTORIES, sBehaviorTrajectoriesFields, LUA_BEHAVIOR_TRAJECTORIES_FIELD_COUNT },
+ { LOT_BEHAVIORVALUES, sBehaviorValuesFields, LUA_BEHAVIOR_VALUES_FIELD_COUNT },
{ LOT_BULLYCOLLISIONDATA, sBullyCollisionDataFields, LUA_BULLY_COLLISION_DATA_FIELD_COUNT },
{ LOT_CAMERA, sCameraFields, LUA_CAMERA_FIELD_COUNT },
{ LOT_CAMERAFOVSTATUS, sCameraFOVStatusFields, LUA_CAMERA_FOVSTATUS_FIELD_COUNT },
diff --git a/src/pc/lua/smlua_cobject_autogen.h b/src/pc/lua/smlua_cobject_autogen.h
index 12d3d0336..d0bced883 100644
--- a/src/pc/lua/smlua_cobject_autogen.h
+++ b/src/pc/lua/smlua_cobject_autogen.h
@@ -8,6 +8,8 @@ enum LuaObjectAutogenType {
LOT_ANIMINFO,
LOT_ANIMATION,
LOT_AREA,
+ LOT_BEHAVIORTRAJECTORIES,
+ LOT_BEHAVIORVALUES,
LOT_BULLYCOLLISIONDATA,
LOT_CAMERA,
LOT_CAMERAFOVSTATUS,