mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-22 12:05:11 +00:00
Mouse Look ported to camera_rebase
With check for settings SDL_SetRelativeMouseMode only if Mouse Look is enabled. We always send regards to Fastblitters.
This commit is contained in:
parent
ef2cd47343
commit
3ebfc225ca
3 changed files with 46 additions and 13 deletions
|
@ -16,6 +16,7 @@
|
||||||
#define NC_OPTION _("OPTIONS")
|
#define NC_OPTION _("OPTIONS")
|
||||||
#define NC_HIGHLIGHT _("O")
|
#define NC_HIGHLIGHT _("O")
|
||||||
#define NC_ANALOGUE _("Analogue Camera")
|
#define NC_ANALOGUE _("Analogue Camera")
|
||||||
|
#define NC_MOUSE _("Mouse Look")
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Global Symbols
|
* Global Symbols
|
||||||
|
|
|
@ -97,6 +97,7 @@ u8 newcam_invertY;
|
||||||
u8 newcam_panlevel; //How much the camera sticks out a bit in the direction you're looking.
|
u8 newcam_panlevel; //How much the camera sticks out a bit in the direction you're looking.
|
||||||
u8 newcam_aggression; //How much the camera tries to centre itself to Mario's facing and movement.
|
u8 newcam_aggression; //How much the camera tries to centre itself to Mario's facing and movement.
|
||||||
u8 newcam_analogue; //Wether to accept inputs from a player 2 joystick, and then disables C button input.
|
u8 newcam_analogue; //Wether to accept inputs from a player 2 joystick, and then disables C button input.
|
||||||
|
u8 newcam_mouse; // Whether to accept mouse input
|
||||||
s16 newcam_distance_values[] = {750,1250,2000};
|
s16 newcam_distance_values[] = {750,1250,2000};
|
||||||
u8 newcam_active = 1; // basically the thing that governs if newcam is on.
|
u8 newcam_active = 1; // basically the thing that governs if newcam is on.
|
||||||
u16 newcam_mode;
|
u16 newcam_mode;
|
||||||
|
@ -109,12 +110,15 @@ f32 newcam_option_timer = 0;
|
||||||
u8 newcam_option_index = 0;
|
u8 newcam_option_index = 0;
|
||||||
u8 newcam_option_scroll = 0;
|
u8 newcam_option_scroll = 0;
|
||||||
u8 newcam_option_scroll_last = 0;
|
u8 newcam_option_scroll_last = 0;
|
||||||
u8 newcam_total = 7; //How many options there are in newcam_uptions.
|
u8 newcam_total = 8; //How many options there are in newcam_uptions.
|
||||||
|
|
||||||
u8 newcam_options[][64] = {{NC_ANALOGUE}, {NC_CAMX}, {NC_CAMY}, {NC_INVERTX}, {NC_INVERTY}, {NC_CAMC}, {NC_CAMP}};
|
u8 newcam_options[][64] = {{NC_ANALOGUE}, {NC_MOUSE}, {NC_CAMX}, {NC_CAMY}, {NC_INVERTX}, {NC_INVERTY}, {NC_CAMC}, {NC_CAMP}};
|
||||||
u8 newcam_flags[][64] = {{NC_DISABLED}, {NC_ENABLED}};
|
u8 newcam_flags[][64] = {{NC_DISABLED}, {NC_ENABLED}};
|
||||||
u8 newcam_strings[][64] = {{NC_BUTTON}, {NC_BUTTON2}, {NC_OPTION}, {NC_HIGHLIGHT}};
|
u8 newcam_strings[][64] = {{NC_BUTTON}, {NC_BUTTON2}, {NC_OPTION}, {NC_HIGHLIGHT}};
|
||||||
|
|
||||||
|
extern int mouse_x;
|
||||||
|
extern int mouse_y;
|
||||||
|
|
||||||
///This is called at every level initialisation.
|
///This is called at every level initialisation.
|
||||||
void newcam_init(struct Camera *c, u8 dv)
|
void newcam_init(struct Camera *c, u8 dv)
|
||||||
{
|
{
|
||||||
|
@ -370,6 +374,12 @@ static void newcam_rotate_button(void)
|
||||||
else
|
else
|
||||||
newcam_tilt_acc -= (newcam_tilt_acc*(DEGRADE));
|
newcam_tilt_acc -= (newcam_tilt_acc*(DEGRADE));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (newcam_mouse == 1)
|
||||||
|
{
|
||||||
|
newcam_yaw += mouse_x * 16;
|
||||||
|
newcam_tilt += mouse_y * 16;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void newcam_zoom_button(void)
|
static void newcam_zoom_button(void)
|
||||||
|
@ -690,24 +700,27 @@ void newcam_change_setting(u8 toggle)
|
||||||
newcam_analogue ^= 1;
|
newcam_analogue ^= 1;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
newcam_mouse ^= 1;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
if (newcam_sensitivityX > 10 && newcam_sensitivityX < 250)
|
if (newcam_sensitivityX > 10 && newcam_sensitivityX < 250)
|
||||||
newcam_sensitivityX += toggle;
|
newcam_sensitivityX += toggle;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 3:
|
||||||
if (newcam_sensitivityY > 10 && newcam_sensitivityY < 250)
|
if (newcam_sensitivityY > 10 && newcam_sensitivityY < 250)
|
||||||
newcam_sensitivityY += toggle;
|
newcam_sensitivityY += toggle;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 4:
|
||||||
newcam_invertX ^= 1;
|
newcam_invertX ^= 1;
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 5:
|
||||||
newcam_invertY ^= 1;
|
newcam_invertY ^= 1;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 6:
|
||||||
if (newcam_aggression > 0 && newcam_aggression < 100)
|
if (newcam_aggression > 0 && newcam_aggression < 100)
|
||||||
newcam_aggression += toggle;
|
newcam_aggression += toggle;
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 7:
|
||||||
if (newcam_panlevel > 0 && newcam_panlevel < 100)
|
if (newcam_panlevel > 0 && newcam_panlevel < 100)
|
||||||
newcam_panlevel += toggle;
|
newcam_panlevel += toggle;
|
||||||
break;
|
break;
|
||||||
|
@ -765,24 +778,27 @@ void newcam_display_options()
|
||||||
newcam_text(160,scroll-12,newcam_flags[newcam_analogue],newcam_option_selection-i);
|
newcam_text(160,scroll-12,newcam_flags[newcam_analogue],newcam_option_selection-i);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
newcam_text(160,scroll-12,newcam_flags[newcam_mouse],newcam_option_selection-i);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
int_to_str(newcam_sensitivityX,newstring);
|
int_to_str(newcam_sensitivityX,newstring);
|
||||||
newcam_text(160,scroll-12,newstring,newcam_option_selection-i);
|
newcam_text(160,scroll-12,newstring,newcam_option_selection-i);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 3:
|
||||||
int_to_str(newcam_sensitivityY,newstring);
|
int_to_str(newcam_sensitivityY,newstring);
|
||||||
newcam_text(160,scroll-12,newstring,newcam_option_selection-i);
|
newcam_text(160,scroll-12,newstring,newcam_option_selection-i);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 4:
|
||||||
newcam_text(160,scroll-12,newcam_flags[newcam_invertX],newcam_option_selection-i);
|
newcam_text(160,scroll-12,newcam_flags[newcam_invertX],newcam_option_selection-i);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 5:
|
||||||
newcam_text(160,scroll-12,newcam_flags[newcam_invertY],newcam_option_selection-i);
|
newcam_text(160,scroll-12,newcam_flags[newcam_invertY],newcam_option_selection-i);
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 6:
|
||||||
int_to_str(newcam_aggression,newstring);
|
int_to_str(newcam_aggression,newstring);
|
||||||
newcam_text(160,scroll-12,newstring,newcam_option_selection-i);
|
newcam_text(160,scroll-12,newstring,newcam_option_selection-i);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 7:
|
||||||
int_to_str(newcam_panlevel,newstring);
|
int_to_str(newcam_panlevel,newstring);
|
||||||
newcam_text(160,scroll-12,newstring,newcam_option_selection-i);
|
newcam_text(160,scroll-12,newstring,newcam_option_selection-i);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -14,16 +14,24 @@
|
||||||
|
|
||||||
extern int16_t rightx;
|
extern int16_t rightx;
|
||||||
extern int16_t righty;
|
extern int16_t righty;
|
||||||
|
int mouse_x;
|
||||||
|
int mouse_y;
|
||||||
|
|
||||||
|
extern u8 newcam_mouse;
|
||||||
|
|
||||||
static bool init_ok;
|
static bool init_ok;
|
||||||
static SDL_GameController *sdl_cntrl;
|
static SDL_GameController *sdl_cntrl;
|
||||||
|
|
||||||
static void controller_sdl_init(void) {
|
static void controller_sdl_init(void) {
|
||||||
if (SDL_Init(SDL_INIT_GAMECONTROLLER) != 0) {
|
if (SDL_Init(SDL_INIT_GAMECONTROLLER | SDL_INIT_EVENTS) != 0) {
|
||||||
fprintf(stderr, "SDL init error: %s\n", SDL_GetError());
|
fprintf(stderr, "SDL init error: %s\n", SDL_GetError());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (newcam_mouse == 1)
|
||||||
|
SDL_SetRelativeMouseMode(SDL_TRUE);
|
||||||
|
SDL_GetRelativeMouseState(&mouse_x, &mouse_y);
|
||||||
|
|
||||||
init_ok = true;
|
init_ok = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +40,15 @@ static void controller_sdl_read(OSContPad *pad) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (newcam_mouse == 1)
|
||||||
|
SDL_SetRelativeMouseMode(SDL_TRUE);
|
||||||
|
else
|
||||||
|
SDL_SetRelativeMouseMode(SDL_FALSE);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SDL_GameControllerUpdate();
|
SDL_GameControllerUpdate();
|
||||||
|
SDL_GetRelativeMouseState(&mouse_x, &mouse_y);
|
||||||
|
|
||||||
if (sdl_cntrl != NULL && !SDL_GameControllerGetAttached(sdl_cntrl)) {
|
if (sdl_cntrl != NULL && !SDL_GameControllerGetAttached(sdl_cntrl)) {
|
||||||
SDL_GameControllerClose(sdl_cntrl);
|
SDL_GameControllerClose(sdl_cntrl);
|
||||||
|
|
Loading…
Reference in a new issue