mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-25 05:25:14 +00:00
Override envfx from Lua (#316)
* Override envfx from Lua set_override_envfx(-1) to reset override * Fix type mismatch
This commit is contained in:
parent
c79a001f5f
commit
1a86d46d95
12 changed files with 161 additions and 2 deletions
|
@ -41,7 +41,8 @@ in_files = [
|
|||
"src/pc/network/version.h",
|
||||
"include/geo_commands.h",
|
||||
"include/level_commands.h",
|
||||
"src/audio/external.h"
|
||||
"src/audio/external.h",
|
||||
"src/game/envfx_snow.h"
|
||||
]
|
||||
|
||||
exclude_constants = {
|
||||
|
|
|
@ -3263,6 +3263,33 @@ RESOLUTION_N64 = 1
|
|||
--- @type HudUtilsResolution
|
||||
RESOLUTION_COUNT = 2
|
||||
|
||||
--- @type integer
|
||||
ENVFX_BUBBLE_START = 10
|
||||
|
||||
--- @type integer
|
||||
ENVFX_FLOWERS = 11
|
||||
|
||||
--- @type integer
|
||||
ENVFX_JETSTREAM_BUBBLES = 14
|
||||
|
||||
--- @type integer
|
||||
ENVFX_LAVA_BUBBLES = 12
|
||||
|
||||
--- @type integer
|
||||
ENVFX_MODE_NONE = 0
|
||||
|
||||
--- @type integer
|
||||
ENVFX_SNOW_BLIZZARD = 3
|
||||
|
||||
--- @type integer
|
||||
ENVFX_SNOW_NORMAL = 1
|
||||
|
||||
--- @type integer
|
||||
ENVFX_SNOW_WATER = 2
|
||||
|
||||
--- @type integer
|
||||
ENVFX_WHIRLPOOL_BUBBLES = 13
|
||||
|
||||
--- @type integer
|
||||
SEQ_PLAYER_ENV = 1
|
||||
|
||||
|
|
|
@ -8296,6 +8296,11 @@ function get_dialog_id()
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @return integer
|
||||
function get_envfx()
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param index integer
|
||||
--- @return number
|
||||
function get_environment_region(index)
|
||||
|
@ -8453,6 +8458,12 @@ function set_lighting_dir(index, value)
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param envfx integer
|
||||
--- @return nil
|
||||
function set_override_envfx(envfx)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @param far number
|
||||
--- @return nil
|
||||
function set_override_far(far)
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
- [djui_hud_utils.h](#djui_hud_utilsh)
|
||||
- [enum DjuiFontType](#enum-DjuiFontType)
|
||||
- [enum HudUtilsResolution](#enum-HudUtilsResolution)
|
||||
- [envfx_snow.h](#envfx_snowh)
|
||||
- [external.h](#externalh)
|
||||
- [geo_commands.h](#geo_commandsh)
|
||||
- [graph_node.h](#graph_nodeh)
|
||||
|
@ -1101,6 +1102,21 @@
|
|||
|
||||
<br />
|
||||
|
||||
## [envfx_snow.h](#envfx_snow.h)
|
||||
- ENVFX_BUBBLE_START
|
||||
- ENVFX_FLOWERS
|
||||
- ENVFX_JETSTREAM_BUBBLES
|
||||
- ENVFX_LAVA_BUBBLES
|
||||
- ENVFX_MODE_NONE
|
||||
- ENVFX_SNOW_BLIZZARD
|
||||
- ENVFX_SNOW_NORMAL
|
||||
- ENVFX_SNOW_WATER
|
||||
- ENVFX_WHIRLPOOL_BUBBLES
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [external.h](#external.h)
|
||||
- SEQ_PLAYER_ENV
|
||||
- SEQ_PLAYER_LEVEL
|
||||
|
|
|
@ -8196,6 +8196,24 @@
|
|||
|
||||
<br />
|
||||
|
||||
## [get_envfx](#get_envfx)
|
||||
|
||||
### Lua Example
|
||||
`local integerValue = get_envfx()`
|
||||
|
||||
### Parameters
|
||||
- None
|
||||
|
||||
### Returns
|
||||
- `integer`
|
||||
|
||||
### C Prototype
|
||||
`u16 get_envfx(void);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [get_environment_region](#get_environment_region)
|
||||
|
||||
### Lua Example
|
||||
|
@ -8693,6 +8711,26 @@
|
|||
|
||||
<br />
|
||||
|
||||
## [set_override_envfx](#set_override_envfx)
|
||||
|
||||
### Lua Example
|
||||
`set_override_envfx(envfx)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| envfx | `integer` |
|
||||
|
||||
### Returns
|
||||
- None
|
||||
|
||||
### C Prototype
|
||||
`void set_override_envfx(s32 envfx);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [set_override_far](#set_override_far)
|
||||
|
||||
### Lua Example
|
||||
|
|
|
@ -1541,6 +1541,7 @@
|
|||
- [get_current_save_file_num](functions-4.md#get_current_save_file_num)
|
||||
- [get_dialog_box_state](functions-4.md#get_dialog_box_state)
|
||||
- [get_dialog_id](functions-4.md#get_dialog_id)
|
||||
- [get_envfx](functions-4.md#get_envfx)
|
||||
- [get_environment_region](functions-4.md#get_environment_region)
|
||||
- [get_hand_foot_pos_x](functions-4.md#get_hand_foot_pos_x)
|
||||
- [get_hand_foot_pos_y](functions-4.md#get_hand_foot_pos_y)
|
||||
|
@ -1566,6 +1567,7 @@
|
|||
- [set_environment_region](functions-4.md#set_environment_region)
|
||||
- [set_last_star_or_key](functions-4.md#set_last_star_or_key)
|
||||
- [set_lighting_dir](functions-4.md#set_lighting_dir)
|
||||
- [set_override_envfx](functions-4.md#set_override_envfx)
|
||||
- [set_override_far](functions-4.md#set_override_far)
|
||||
- [set_override_fov](functions-4.md#set_override_fov)
|
||||
- [set_override_near](functions-4.md#set_override_near)
|
||||
|
|
|
@ -9,6 +9,9 @@
|
|||
#include "envfx_snow.h"
|
||||
#include "level_geo.h"
|
||||
|
||||
u16 gReadOnlyEnvFx = 0;
|
||||
s32 gOverrideEnvFx = -1;
|
||||
|
||||
/**
|
||||
* Geo function that generates a displaylist for environment effects such as
|
||||
* snow or jet stream bubbles.
|
||||
|
@ -27,7 +30,8 @@ Gfx *geo_envfx_main(s32 callContext, struct GraphNode *node, UNUSED Mat4 mtxf) {
|
|||
|
||||
if (GET_HIGH_U16_OF_32(*params) != gAreaUpdateCounter) {
|
||||
UNUSED struct Camera *sp2C = gCurGraphNodeCamera->config.camera;
|
||||
s32 snowMode = GET_LOW_U16_OF_32(*params);
|
||||
gReadOnlyEnvFx = GET_LOW_U16_OF_32(*params);
|
||||
s32 snowMode = gOverrideEnvFx == -1 ? gReadOnlyEnvFx : gOverrideEnvFx;
|
||||
|
||||
vec3f_to_vec3s(camTo, gCurGraphNodeCamera->focus);
|
||||
vec3f_to_vec3s(camFrom, gCurGraphNodeCamera->pos);
|
||||
|
|
|
@ -11,6 +11,9 @@ struct Struct802761D0
|
|||
u8 filler4[0x18-0x4];
|
||||
};
|
||||
|
||||
extern u16 gReadOnlyEnvFx;
|
||||
extern s32 gOverrideEnvFx;
|
||||
|
||||
Gfx *geo_envfx_main(s32 callContext, struct GraphNode *node, Mat4 mtxf);
|
||||
Gfx *geo_skybox_main(s32 callContext, struct GraphNode *node, UNUSED Mat4 *mtx);
|
||||
|
||||
|
|
|
@ -1305,6 +1305,15 @@ char gSmluaConstants[] = ""
|
|||
"FONT_MENU = 1\n"
|
||||
"FONT_HUD = 2\n"
|
||||
"FONT_COUNT = 3\n"
|
||||
"ENVFX_MODE_NONE = 0\n"
|
||||
"ENVFX_SNOW_NORMAL = 1\n"
|
||||
"ENVFX_SNOW_WATER = 2\n"
|
||||
"ENVFX_SNOW_BLIZZARD = 3\n"
|
||||
"ENVFX_BUBBLE_START = 10\n"
|
||||
"ENVFX_FLOWERS = 11\n"
|
||||
"ENVFX_LAVA_BUBBLES = 12\n"
|
||||
"ENVFX_WHIRLPOOL_BUBBLES = 13\n"
|
||||
"ENVFX_JETSTREAM_BUBBLES = 14\n"
|
||||
"SEQ_PLAYER_LEVEL = 0\n"
|
||||
"SEQ_PLAYER_ENV = 1\n"
|
||||
"SEQ_PLAYER_SFX = 2\n"
|
||||
|
|
|
@ -27072,6 +27072,21 @@ int smlua_func_get_dialog_id(UNUSED lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_get_envfx(UNUSED lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 0) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "get_envfx", 0, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
lua_pushinteger(L, get_envfx());
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_get_environment_region(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
|
@ -27511,6 +27526,23 @@ int smlua_func_set_lighting_dir(lua_State* L) {
|
|||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_set_override_envfx(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 1) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "set_override_envfx", 1, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 envfx = smlua_to_integer(L, 1);
|
||||
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "set_override_envfx"); return 0; }
|
||||
|
||||
set_override_envfx(envfx);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_set_override_far(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
|
@ -30536,6 +30568,7 @@ void smlua_bind_functions_autogen(void) {
|
|||
smlua_bind_function(L, "get_current_save_file_num", smlua_func_get_current_save_file_num);
|
||||
smlua_bind_function(L, "get_dialog_box_state", smlua_func_get_dialog_box_state);
|
||||
smlua_bind_function(L, "get_dialog_id", smlua_func_get_dialog_id);
|
||||
smlua_bind_function(L, "get_envfx", smlua_func_get_envfx);
|
||||
smlua_bind_function(L, "get_environment_region", smlua_func_get_environment_region);
|
||||
smlua_bind_function(L, "get_hand_foot_pos_x", smlua_func_get_hand_foot_pos_x);
|
||||
smlua_bind_function(L, "get_hand_foot_pos_y", smlua_func_get_hand_foot_pos_y);
|
||||
|
@ -30561,6 +30594,7 @@ void smlua_bind_functions_autogen(void) {
|
|||
smlua_bind_function(L, "set_environment_region", smlua_func_set_environment_region);
|
||||
smlua_bind_function(L, "set_last_star_or_key", smlua_func_set_last_star_or_key);
|
||||
smlua_bind_function(L, "set_lighting_dir", smlua_func_set_lighting_dir);
|
||||
smlua_bind_function(L, "set_override_envfx", smlua_func_set_override_envfx);
|
||||
smlua_bind_function(L, "set_override_far", smlua_func_set_override_far);
|
||||
smlua_bind_function(L, "set_override_fov", smlua_func_set_override_fov);
|
||||
smlua_bind_function(L, "set_override_near", smlua_func_set_override_near);
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include "game/skybox.h"
|
||||
#include "pc/gfx/gfx_pc.h"
|
||||
#include "include/course_table.h"
|
||||
#include "game/level_geo.h"
|
||||
|
||||
u32 get_network_area_timer(void) {
|
||||
return gNetworkAreaTimer;
|
||||
|
@ -427,3 +428,13 @@ void set_ttc_speed_setting(s16 speed) {
|
|||
u32 get_time(void) {
|
||||
return time(NULL);
|
||||
}
|
||||
|
||||
///
|
||||
|
||||
u16 get_envfx(void) {
|
||||
return gReadOnlyEnvFx;
|
||||
}
|
||||
|
||||
void set_override_envfx(s32 envfx) {
|
||||
gOverrideEnvFx = envfx;
|
||||
}
|
||||
|
|
|
@ -107,4 +107,7 @@ void set_ttc_speed_setting(s16 speed);
|
|||
|
||||
u32 get_time(void);
|
||||
|
||||
u16 get_envfx(void);
|
||||
void set_override_envfx(s32 envfx);
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue