mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-05-23 23:05:53 -04:00
Merge pull request #143 from coco875/fix-compilation-issue
Fix compilation issue
This commit is contained in:
+2
-15
@@ -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[];
|
||||
|
||||
@@ -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],
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user