Merge pull request #143 from coco875/fix-compilation-issue

Fix compilation issue
This commit is contained in:
MegaMech
2025-01-07 16:14:15 -07:00
committed by GitHub
3 changed files with 46 additions and 53 deletions
+2 -15
View File
@@ -154,7 +154,8 @@ void func_80011EC0(s32, Player*, s32, u16);
void generate_train_waypoints(void);
void generate_ferry_waypoints(void);
void spawn_vehicle_on_road(Vec3f position, Vec3s rotation, Vec3f velocity, s32 waypointIndex, s32 someMultiplierTheSequel, f32 speed);
void spawn_vehicle_on_road(Vec3f position, Vec3s rotation, Vec3f velocity, s32 waypointIndex,
s32 someMultiplierTheSequel, f32 speed);
void spawn_course_vehicles(void);
void set_vehicle_pos_waypoint(TrainCarStuff*, Path2D*, u16);
void init_vehicles_trains(size_t, size_t, f32);
@@ -271,7 +272,6 @@ extern s16 D_80162FF8[];
extern s16 D_80163010[];
extern f32 D_80163028[];
extern s16 D_80163050[];
extern f32 D_80163068[];
extern f32 D_80163090[];
extern s32 D_801630B8[];
extern u16 D_801630E0;
@@ -285,9 +285,6 @@ extern f32 D_80163178[];
extern f32 D_801631A0[];
extern s16 D_801631C8;
extern s32 D_801631CC;
extern TrackWaypoint* D_801631D0;
extern TrackWaypoint* D_801631D4;
extern s16* D_801631D8;
extern u16 D_801631E0[];
extern u16 D_801631F8[];
extern f32 D_8016320C;
@@ -305,7 +302,6 @@ extern u16 gKartAIBehaviourState[];
enum { KART_AI_BEHAVIOUR_STATE_NONE, KART_AI_BEHAVIOUR_STATE_START, KART_AI_BEHAVIOUR_STATE_RUNNING };
extern s16 D_80163300[];
extern u16 D_80163318[];
extern u16 D_80163330[];
extern u16 D_80163344[];
extern u16 D_80163348[];
@@ -319,7 +315,6 @@ enum {
SPEED_KART_AI_BEHAVIOUR_MAX
};
extern s32 D_80163368[];
extern s32 D_80163378;
extern s32 D_8016337C;
extern s16 D_80163380[];
@@ -332,8 +327,6 @@ extern s16 D_80163410[];
extern f32 D_80163418[];
extern f32 D_80163428[];
extern f32 D_80163438[];
extern s32 D_80163448;
extern f32 D_8016344C;
extern f32 D_80163450[];
extern s16 D_80163478;
// 0 or 1, only 1 when when in extra (mirror) mode
@@ -344,8 +337,6 @@ extern s32 D_80163480;
extern s32 D_80163484;
extern s32 D_80163488;
extern s16 D_8016348C;
extern s16 D_80163490[];
extern s16 D_801634A8[];
extern s16 D_801634C0[];
extern s16 bStopAICrossing[];
extern s16 D_801634EC;
@@ -368,15 +359,11 @@ extern s32 gLapCountByPlayerId[]; // D_80164390
extern s32 gGPCurrentRaceRankByPlayerId[]; // D_801643B8
extern s32 D_801643E0[];
extern s32 D_80164408[];
extern u16 D_80164430;
extern u16 gNearestWaypointByPlayerId[];
extern s32 D_80164450[];
extern s16 D_80164478[];
extern s32 D_8016448C;
extern f32 D_80164498[];
extern f32 gLapCompletionPercentByPlayerId[]; // D_801644A8
extern f32 gCourseCompletionPercentByPlayerId[]; // D_801644D0
extern s16 D_801644F8[];
extern f32 D_80164510[];
extern s16 D_80164538[];
extern s32 D_801645D0[];
+43 -36
View File
@@ -90,7 +90,7 @@ void freecam(Camera* camera, Player* player, s8 index) {
// Calculate forward direction
freecam_calculate_forward_vector_allow_rotation(camera, freeCam.forwardVector);
// Adjust camera rotation
if (fTargetPlayer) {
freecam_target_player(camera, freeCam.forwardVector);
@@ -103,7 +103,6 @@ void freecam(Camera* camera, Player* player, s8 index) {
// Apply final position, velocity, and lookAt
freecam_tick(camera, freeCam.forwardVector);
}
f32 gFreecamRotateSmoothingFactor = 0.85f;
@@ -113,9 +112,9 @@ void freecam_mouse_manager(Camera* camera, Vec3f forwardVector) {
auto wnd = GameEngine::Instance->context->GetWindow();
Ship::Coords mouse = wnd->GetMouseDelta();
//Uint32 mouseState = SDL_GetRelativeMouseState(&mouse.x, &mouse.y);
// Uint32 mouseState = SDL_GetRelativeMouseState(&mouse.x, &mouse.y);
//printf("MOUSE %d %d\n", mouse.x, mouse.y);
// printf("MOUSE %d %d\n", mouse.x, mouse.y);
mouse.x = (mouse.x + prevMouseX) / 2;
mouse.y = (mouse.y + prevMouseY) / 2;
@@ -167,11 +166,14 @@ bool FreecamKeyDown(int virtualKey) {
// Use SDL to check key states
const uint8_t* keystate = SDL_GetKeyboardState(NULL);
isDownNow = keystate[virtualKey] != 0;
} else if (wnd->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
}
#ifdef _WIN32
else if (wnd->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
// Use Windows GetKeyState for DirectX
SHORT keyState = GetKeyState(virtualKey);
isDownNow = (keyState & 0x8000) != 0;
}
#endif
// Determine if this is a new key press
bool isKeyDownEvent = isDownNow && !prevKeyState[virtualKey];
@@ -182,7 +184,6 @@ bool FreecamKeyDown(int virtualKey) {
return isKeyDownEvent;
}
void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector) {
auto wnd = GameEngine::Instance->context->GetWindow();
float moveSpeed = gFreecamSpeed;
@@ -199,7 +200,8 @@ void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector) {
// if (keystate[SDL_SCANCODE_G]) {
// fTargetPlayer = false;
// }
bool TargetNextPlayer = false, TargetPreviousPlayer = false; bool prevNext;
bool TargetNextPlayer = false, TargetPreviousPlayer = false;
bool prevNext;
bool Forward = false, PanLeft = false, Backward = false, PanRight = false;
bool Up = false, Down = false;
bool FastMove = false;
@@ -213,7 +215,7 @@ void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector) {
// }
// Target a player
if (controller->buttonPressed & R_TRIG) {
fTargetPlayer = !fTargetPlayer;
fTargetPlayer = !fTargetPlayer;
}
if (controller->buttonPressed & L_CBUTTONS) {
TargetPreviousPlayer = true;
@@ -242,10 +244,12 @@ void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector) {
// if (controller->button ??) {
// FastMove = true;
// }
// Keyboard and mouse DX
} else if (wnd->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
// Keyboard and mouse DX
}
#ifdef _WIN32
else if (wnd->GetWindowBackend() == Ship::WindowBackend::FAST3D_DXGI_DX11) {
if (FreecamKeyDown('F')) {
fTargetPlayer = !fTargetPlayer;
fTargetPlayer = !fTargetPlayer;
}
if (FreecamKeyDown('N')) {
TargetPreviousPlayer = true;
@@ -273,10 +277,12 @@ void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector) {
}
// Fast movement with Ctrl
if (GetKeyState(VK_LCONTROL) || GetKeyState(VK_RCONTROL)) {
FastMove = true;
FastMove = true;
}
// Keyboard/mouse OpenGL/SDL
} else if (wnd->GetWindowBackend() == Ship::WindowBackend::FAST3D_SDL_OPENGL) {
// Keyboard/mouse OpenGL/SDL
}
#endif
else if (wnd->GetWindowBackend() == Ship::WindowBackend::FAST3D_SDL_OPENGL) {
const uint8_t* keystate = SDL_GetKeyboardState(NULL);
if (FreecamKeyDown(SDL_SCANCODE_F)) {
fTargetPlayer = !fTargetPlayer;
@@ -306,26 +312,26 @@ void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector) {
Down = true;
}
if (keystate[SDL_SCANCODE_LCTRL] || keystate[SDL_SCANCODE_RCTRL]) {
FastMove = true;
FastMove = true;
}
}
// Target previous player
if (TargetPreviousPlayer) {
if (fRankIndex > 0) {
fRankIndex--;
camera->playerId = fRankIndex;
D_800DC5EC->player = &gPlayers[fRankIndex];
}
if (fRankIndex > 0) {
fRankIndex--;
camera->playerId = fRankIndex;
D_800DC5EC->player = &gPlayers[fRankIndex];
}
}
// Target next player
if (TargetNextPlayer) {
if (fRankIndex < 7) {
fRankIndex++;
camera->playerId = fRankIndex;
D_800DC5EC->player = &gPlayers[fRankIndex];
}
if (fRankIndex < 7) {
fRankIndex++;
camera->playerId = fRankIndex;
D_800DC5EC->player = &gPlayers[fRankIndex];
}
}
if (FastMove) {
@@ -333,26 +339,26 @@ void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector) {
}
if (Forward) {
totalMove[0] += forwardVector[0] * moveSpeed;
totalMove[2] += forwardVector[2] * moveSpeed;
totalMove[0] += forwardVector[0] * moveSpeed;
totalMove[2] += forwardVector[2] * moveSpeed;
}
if (Backward) {
totalMove[0] -= forwardVector[0] * moveSpeed;
totalMove[2] -= forwardVector[2] * moveSpeed;
totalMove[0] -= forwardVector[0] * moveSpeed;
totalMove[2] -= forwardVector[2] * moveSpeed;
}
if (PanRight) {
totalMove[0] -= forwardVector[2] * moveSpeed; // Pan right
totalMove[2] += forwardVector[0] * moveSpeed;
totalMove[0] -= forwardVector[2] * moveSpeed; // Pan right
totalMove[2] += forwardVector[0] * moveSpeed;
}
if (PanLeft) {
totalMove[0] += forwardVector[2] * moveSpeed; // Pan left
totalMove[2] -= forwardVector[0] * moveSpeed;
totalMove[0] += forwardVector[2] * moveSpeed; // Pan left
totalMove[2] -= forwardVector[0] * moveSpeed;
}
if (Up) {
totalMove[1] += moveSpeed; // Move up
totalMove[1] += moveSpeed; // Move up
}
if (Down) {
totalMove[1] -= moveSpeed; // Move down
totalMove[1] -= moveSpeed; // Move down
}
freeCam.velocity[0] += totalMove[0];
freeCam.velocity[1] += totalMove[1];
@@ -368,7 +374,8 @@ void freecam_render_setup(void) {
func_80057FC4(0);
gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK | G_CULL_BOTH | G_CULL_FRONT);
guPerspective(&gGfxPool->mtxPersp[0], &perspNorm, gCameraZoom[0], gScreenAspect, CourseManager_GetProps()->NearPersp, CourseManager_GetProps()->FarPersp, 1.0f);
guPerspective(&gGfxPool->mtxPersp[0], &perspNorm, gCameraZoom[0], gScreenAspect,
CourseManager_GetProps()->NearPersp, CourseManager_GetProps()->FarPersp, 1.0f);
gSPPerspNormalize(gDisplayListHead++, perspNorm);
gSPMatrix(gDisplayListHead++, (&gGfxPool->mtxPersp[0]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
guLookAt(&gGfxPool->mtxLookAt[0], camera1->pos[0], camera1->pos[1], camera1->pos[2], camera1->lookAt[0],
+1 -2
View File
@@ -78,8 +78,7 @@ void freecam_target_player(Camera* camera, Vec3f forwardVector) {
forwardVector[2] = camera->lookAt[2] - camera->pos[2];
// Normalize the forward vector
f32 forwardLength = sqrtf(forwardVector[0] * forwardVector[0] +
forwardVector[1] * forwardVector[1] +
f32 forwardLength = sqrtf(forwardVector[0] * forwardVector[0] + forwardVector[1] * forwardVector[1] +
forwardVector[2] * forwardVector[2]);
if (forwardLength > 0.0f) {
forwardVector[0] /= forwardLength;