mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2026-04-28 04:51:40 +00:00
update gCamera as the pointer is updated
This commit is contained in:
parent
8feea0111e
commit
d07e31de49
5 changed files with 21 additions and 8 deletions
|
|
@ -534,6 +534,11 @@ void skip_camera_interpolation(void) {
|
||||||
gCamSkipInterp = 1;
|
gCamSkipInterp = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void set_gcamera(struct Camera *c) {
|
||||||
|
gCamera = c;
|
||||||
|
gCameraCObject->pointer = c;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts a camera shake triggered by an interaction
|
* Starts a camera shake triggered by an interaction
|
||||||
*/
|
*/
|
||||||
|
|
@ -3170,7 +3175,7 @@ void update_camera(struct Camera *c) {
|
||||||
if (!c) { return; }
|
if (!c) { return; }
|
||||||
UNUSED u8 unused[24];
|
UNUSED u8 unused[24];
|
||||||
|
|
||||||
gCamera = c;
|
set_gcamera(c);
|
||||||
update_camera_hud_status(c);
|
update_camera_hud_status(c);
|
||||||
|
|
||||||
if ((gOverrideFreezeCamera || get_first_person_enabled()) && !gDjuiInMainMenu) {
|
if ((gOverrideFreezeCamera || get_first_person_enabled()) && !gDjuiInMainMenu) {
|
||||||
|
|
@ -3412,7 +3417,7 @@ void soft_reset_camera(struct Camera* c) {
|
||||||
*/
|
*/
|
||||||
void reset_camera(struct Camera *c) {
|
void reset_camera(struct Camera *c) {
|
||||||
if (!c) { return; }
|
if (!c) { return; }
|
||||||
gCamera = c;
|
set_gcamera(c);
|
||||||
gCameraMovementFlags = 0;
|
gCameraMovementFlags = 0;
|
||||||
s2ndRotateFlags = 0;
|
s2ndRotateFlags = 0;
|
||||||
sStatusFlags = 0;
|
sStatusFlags = 0;
|
||||||
|
|
@ -12205,7 +12210,7 @@ void romhack_camera_init_settings(void) {
|
||||||
} else if (configEnableRomhackCamera == RCE_ON) {
|
} else if (configEnableRomhackCamera == RCE_ON) {
|
||||||
override = configRomhackCameraBowserFights ? RCO_ALL_INCLUDING_VANILLA : RCO_ALL_VANILLA_EXCEPT_BOWSER;
|
override = configRomhackCameraBowserFights ? RCO_ALL_INCLUDING_VANILLA : RCO_ALL_VANILLA_EXCEPT_BOWSER;
|
||||||
}
|
}
|
||||||
|
|
||||||
gRomhackCameraSettings.enable = override;
|
gRomhackCameraSettings.enable = override;
|
||||||
gCameraUseCourseSpecificSettings = (override == RCO_DISABLE && dynos_level_is_vanilla_level(gCurrLevelNum));
|
gCameraUseCourseSpecificSettings = (override == RCO_DISABLE && dynos_level_is_vanilla_level(gCurrLevelNum));
|
||||||
gRomhackCameraSettings.collisions = configRomhackCameraHasCollision;
|
gRomhackCameraSettings.collisions = configRomhackCameraHasCollision;
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,8 @@ int gSmLuaCPointers = 0;
|
||||||
int gSmLuaCObjectMetatable = 0;
|
int gSmLuaCObjectMetatable = 0;
|
||||||
int gSmLuaCPointerMetatable = 0;
|
int gSmLuaCPointerMetatable = 0;
|
||||||
|
|
||||||
|
CObject *gCameraCObject = NULL;
|
||||||
|
|
||||||
struct LuaObjectField* smlua_get_object_field_from_ot(struct LuaObjectTable* ot, const char* key) {
|
struct LuaObjectField* smlua_get_object_field_from_ot(struct LuaObjectTable* ot, const char* key) {
|
||||||
// binary search
|
// binary search
|
||||||
s32 min = 0;
|
s32 min = 0;
|
||||||
|
|
@ -775,7 +777,7 @@ void smlua_cobject_init_globals(void) {
|
||||||
|
|
||||||
EXPOSE_GLOBAL(LOT_NAMETAGSSETTINGS, gNametagsSettings);
|
EXPOSE_GLOBAL(LOT_NAMETAGSSETTINGS, gNametagsSettings);
|
||||||
|
|
||||||
EXPOSE_GLOBAL_PTR(LOT_CAMERA, gCamera);
|
gCameraCObject = smlua_push_object(L, LOT_CAMERA, gCamera, NULL); lua_setglobal(L, "gCamera");
|
||||||
}
|
}
|
||||||
|
|
||||||
void smlua_cobject_init_per_file_globals(const char* path) {
|
void smlua_cobject_init_per_file_globals(const char* path) {
|
||||||
|
|
|
||||||
|
|
@ -74,6 +74,8 @@ extern int gSmLuaCPointers;
|
||||||
extern int gSmLuaCObjectMetatable;
|
extern int gSmLuaCObjectMetatable;
|
||||||
extern int gSmLuaCPointerMetatable;
|
extern int gSmLuaCPointerMetatable;
|
||||||
|
|
||||||
|
extern CObject *gCameraCObject;
|
||||||
|
|
||||||
bool smlua_valid_lot(u16 lot);
|
bool smlua_valid_lot(u16 lot);
|
||||||
bool smlua_valid_lvt(u16 lvt);
|
bool smlua_valid_lvt(u16 lvt);
|
||||||
const char *smlua_get_lvt_name(u16 lvt);
|
const char *smlua_get_lvt_name(u16 lvt);
|
||||||
|
|
|
||||||
|
|
@ -346,7 +346,7 @@ bool packet_read_lnt(struct Packet* p, struct LSTNetworkType* lnt) {
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void smlua_push_object(lua_State* L, u16 lot, void* p, void *extraInfo) {
|
CObject *smlua_push_object(lua_State* L, u16 lot, void* p, void *extraInfo) {
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
lua_pushnil(L);
|
lua_pushnil(L);
|
||||||
return;
|
return;
|
||||||
|
|
@ -379,9 +379,11 @@ void smlua_push_object(lua_State* L, u16 lot, void* p, void *extraInfo) {
|
||||||
lua_remove(L, -2); // Remove gSmLuaCObjects table
|
lua_remove(L, -2); // Remove gSmLuaCObjects table
|
||||||
|
|
||||||
LUA_STACK_CHECK_END();
|
LUA_STACK_CHECK_END();
|
||||||
|
|
||||||
|
return cobject;
|
||||||
}
|
}
|
||||||
|
|
||||||
void smlua_push_pointer(lua_State* L, u16 lvt, void* p, void *extraInfo) {
|
CPointer *smlua_push_pointer(lua_State* L, u16 lvt, void* p, void *extraInfo) {
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
lua_pushnil(L);
|
lua_pushnil(L);
|
||||||
return;
|
return;
|
||||||
|
|
@ -413,6 +415,8 @@ void smlua_push_pointer(lua_State* L, u16 lvt, void* p, void *extraInfo) {
|
||||||
lua_settable(L, -4);
|
lua_settable(L, -4);
|
||||||
lua_remove(L, -2); // Remove gSmLuaCPointers table
|
lua_remove(L, -2); // Remove gSmLuaCPointers table
|
||||||
LUA_STACK_CHECK_END();
|
LUA_STACK_CHECK_END();
|
||||||
|
|
||||||
|
return cpointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
void smlua_push_integer_field(int index, const char* name, lua_Integer val) {
|
void smlua_push_integer_field(int index, const char* name, lua_Integer val) {
|
||||||
|
|
|
||||||
|
|
@ -28,8 +28,8 @@ struct LSTNetworkType smlua_to_lnt(lua_State* L, int index);
|
||||||
bool packet_write_lnt(struct Packet* p, struct LSTNetworkType* lnt);
|
bool packet_write_lnt(struct Packet* p, struct LSTNetworkType* lnt);
|
||||||
bool packet_read_lnt(struct Packet* p, struct LSTNetworkType* lnt);
|
bool packet_read_lnt(struct Packet* p, struct LSTNetworkType* lnt);
|
||||||
|
|
||||||
void smlua_push_object(lua_State* L, u16 lot, void* p, void *extraInfo);
|
CObject *smlua_push_object(lua_State* L, u16 lot, void* p, void *extraInfo);
|
||||||
void smlua_push_pointer(lua_State* L, u16 lvt, void* p, void *extraInfo);
|
CPointer *smlua_push_pointer(lua_State* L, u16 lvt, void* p, void *extraInfo);
|
||||||
void smlua_push_integer_field(int index, const char* name, lua_Integer val);
|
void smlua_push_integer_field(int index, const char* name, lua_Integer val);
|
||||||
void smlua_push_number_field(int index, const char* name, lua_Number val);
|
void smlua_push_number_field(int index, const char* name, lua_Number val);
|
||||||
void smlua_push_string_field(int index, const char* name, const char* val);
|
void smlua_push_string_field(int index, const char* name, const char* val);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue