[modding] Implement Vehicles & Fix Animations (#109)

* Train works

* Fix minimap

* Fix highway

* Fix

* Refactor train and boat

* Update

* Implement Trucks

* Fix tanker

* Finish implementing vehicles

* Fix animations

* Fix spawn players

* Fix spawn players

* Fix loading custom data

---------

Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com>
This commit is contained in:
MegaMech
2024-10-15 13:09:43 -06:00
committed by GitHub
parent 58d56fcba8
commit a0862b6a15
82 changed files with 3130 additions and 808 deletions
+7 -12
View File
@@ -5,7 +5,7 @@
void func_8029CF0C(struct ActorSpawnData* spawnData, struct FallingRock* rock) {
#ifndef TARGET_N64
struct ActorSpawnData* temp_v0 = (struct ActorSpawnData*) LOAD_ASSET(spawnData);
struct ActorSpawnData* temp_v0 = spawnData;
#else
s32 segment = SEGMENT_NUMBER2(spawnData);
s32 offset = SEGMENT_OFFSET(spawnData);
@@ -24,21 +24,16 @@ void func_8029CF0C(struct ActorSpawnData* spawnData, struct FallingRock* rock) {
}
/**
* @brief Spawns falling rocks.
* @brief Spawns falling sRockSpawnData.
* Used in Choco Mountain.
*
* @param spawnData
*/
struct ActorSpawnData* rocks;
void spawn_falling_rocks(const char* spawnData) {
static struct ActorSpawnData* sRockSpawnData;
void spawn_falling_rocks(struct ActorSpawnData* spawnData) {
#ifndef TARGET_N64
struct ActorSpawnData* temp_s0;
if (GetCourse() == GetTestCourse()) {
temp_s0 = (struct ActorSpawnData*) spawnData;
} else {
temp_s0 = (struct ActorSpawnData*) LOAD_ASSET(spawnData);
}
rocks = temp_s0;
struct ActorSpawnData* temp_s0 = spawnData;
sRockSpawnData = spawnData;
#else
s32 addr = SEGMENT_NUMBER2(spawnData);
s32 offset = SEGMENT_OFFSET(spawnData);
@@ -82,7 +77,7 @@ void update_actor_falling_rocks(struct FallingRock* rock) {
return;
}
if (rock->pos[1] < D_8015F8E4) {
func_8029CF0C(rocks, rock);
func_8029CF0C(sRockSpawnData, rock);
}
rock->rot[0] += (s16) ((rock->velocity[2] * 5461.0f) / 20.0f);
rock->rot[2] += (s16) ((rock->velocity[0] * 5461.0f) / 20.0f);
+1 -1
View File
@@ -27,7 +27,7 @@ void render_actor_railroad_crossing(Camera* arg0, struct RailroadCrossing* rr_cr
gSPSetGeometryMode(gDisplayListHead++, G_LIGHTING);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
if (isCrossingTriggeredByIndex[rr_crossing->crossingId]) {
if (CourseManager_GetCrossingOnTriggered(rr_crossing->crossingTrigger)) {
if (rr_crossing->someTimer < 20) {
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_crossing_right_active);
+1 -1
View File
@@ -9,7 +9,7 @@
*/
void update_actor_railroad_crossing(struct RailroadCrossing* crossing) {
// If train close?
if (isCrossingTriggeredByIndex[crossing->crossingId] != 0) {
if (CourseManager_GetCrossingOnTriggered(crossing->crossingTrigger)) {
// Timer++
crossing->someTimer++;
// Reset timer