mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2026-03-26 21:11:43 +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;
|
||||
}
|
||||
|
||||
static void set_gcamera(struct Camera *c) {
|
||||
gCamera = c;
|
||||
gCameraCObject->pointer = c;
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts a camera shake triggered by an interaction
|
||||
*/
|
||||
|
|
@ -3170,7 +3175,7 @@ void update_camera(struct Camera *c) {
|
|||
if (!c) { return; }
|
||||
UNUSED u8 unused[24];
|
||||
|
||||
gCamera = c;
|
||||
set_gcamera(c);
|
||||
update_camera_hud_status(c);
|
||||
|
||||
if ((gOverrideFreezeCamera || get_first_person_enabled()) && !gDjuiInMainMenu) {
|
||||
|
|
@ -3412,7 +3417,7 @@ void soft_reset_camera(struct Camera* c) {
|
|||
*/
|
||||
void reset_camera(struct Camera *c) {
|
||||
if (!c) { return; }
|
||||
gCamera = c;
|
||||
set_gcamera(c);
|
||||
gCameraMovementFlags = 0;
|
||||
s2ndRotateFlags = 0;
|
||||
sStatusFlags = 0;
|
||||
|
|
@ -12205,7 +12210,7 @@ void romhack_camera_init_settings(void) {
|
|||
} else if (configEnableRomhackCamera == RCE_ON) {
|
||||
override = configRomhackCameraBowserFights ? RCO_ALL_INCLUDING_VANILLA : RCO_ALL_VANILLA_EXCEPT_BOWSER;
|
||||
}
|
||||
|
||||
|
||||
gRomhackCameraSettings.enable = override;
|
||||
gCameraUseCourseSpecificSettings = (override == RCO_DISABLE && dynos_level_is_vanilla_level(gCurrLevelNum));
|
||||
gRomhackCameraSettings.collisions = configRomhackCameraHasCollision;
|
||||
|
|
|
|||
|
|
@ -23,6 +23,8 @@ int gSmLuaCPointers = 0;
|
|||
int gSmLuaCObjectMetatable = 0;
|
||||
int gSmLuaCPointerMetatable = 0;
|
||||
|
||||
CObject *gCameraCObject = NULL;
|
||||
|
||||
struct LuaObjectField* smlua_get_object_field_from_ot(struct LuaObjectTable* ot, const char* key) {
|
||||
// binary search
|
||||
s32 min = 0;
|
||||
|
|
@ -775,7 +777,7 @@ void smlua_cobject_init_globals(void) {
|
|||
|
||||
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) {
|
||||
|
|
|
|||
|
|
@ -74,6 +74,8 @@ extern int gSmLuaCPointers;
|
|||
extern int gSmLuaCObjectMetatable;
|
||||
extern int gSmLuaCPointerMetatable;
|
||||
|
||||
extern CObject *gCameraCObject;
|
||||
|
||||
bool smlua_valid_lot(u16 lot);
|
||||
bool smlua_valid_lvt(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) {
|
||||
lua_pushnil(L);
|
||||
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_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) {
|
||||
lua_pushnil(L);
|
||||
return;
|
||||
|
|
@ -413,6 +415,8 @@ void smlua_push_pointer(lua_State* L, u16 lvt, void* p, void *extraInfo) {
|
|||
lua_settable(L, -4);
|
||||
lua_remove(L, -2); // Remove gSmLuaCPointers table
|
||||
LUA_STACK_CHECK_END();
|
||||
|
||||
return cpointer;
|
||||
}
|
||||
|
||||
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_read_lnt(struct Packet* p, struct LSTNetworkType* lnt);
|
||||
|
||||
void 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);
|
||||
CObject *smlua_push_object(lua_State* L, u16 lot, 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_number_field(int index, const char* name, lua_Number val);
|
||||
void smlua_push_string_field(int index, const char* name, const char* val);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue