Merge branch 'coop' of github.com:sm64ex-coop-dev/sm64ex-coop into coop

This commit is contained in:
MysterD 2023-04-20 20:54:28 -07:00
commit 275fa0fb0a
8 changed files with 83 additions and 17 deletions

View File

@ -7366,6 +7366,14 @@ function obj_init_animation(obj, animIndex)
-- ... -- ...
end end
--- @param obj Object
--- @param animIndex integer
--- @param accel number
--- @return nil
function obj_init_animation_with_accel_and_sound(obj, animIndex, accel)
-- ...
end
--- @param obj Object --- @param obj Object
--- @return integer --- @return integer
function obj_is_hidden(obj) function obj_is_hidden(obj)
@ -7990,11 +7998,11 @@ end
--- @param startX number --- @param startX number
--- @param startY number --- @param startY number
--- @param startZ number --- @param startZ number
--- @param endX number --- @param dirX number
--- @param endY number --- @param dirY number
--- @param endZ number --- @param dirZ number
--- @return RayIntersectionInfo --- @return RayIntersectionInfo
function collision_find_surface_on_ray(startX, startY, startZ, endX, endY, endZ) function collision_find_surface_on_ray(startX, startY, startZ, dirX, dirY, dirZ)
-- ... -- ...
end end

View File

@ -5299,6 +5299,28 @@
<br /> <br />
## [obj_init_animation_with_accel_and_sound](#obj_init_animation_with_accel_and_sound)
### Lua Example
`obj_init_animation_with_accel_and_sound(obj, animIndex, accel)`
### Parameters
| Field | Type |
| ----- | ---- |
| obj | [Object](structs.md#Object) |
| animIndex | `integer` |
| accel | `number` |
### Returns
- None
### C Prototype
`void obj_init_animation_with_accel_and_sound(struct Object *obj, s32 animIndex, f32 accel);`
[:arrow_up_small:](#)
<br />
## [obj_is_hidden](#obj_is_hidden) ## [obj_is_hidden](#obj_is_hidden)
### Lua Example ### Lua Example
@ -7191,7 +7213,7 @@
## [collision_find_surface_on_ray](#collision_find_surface_on_ray) ## [collision_find_surface_on_ray](#collision_find_surface_on_ray)
### Lua Example ### Lua Example
`local RayIntersectionInfoValue = collision_find_surface_on_ray(startX, startY, startZ, endX, endY, endZ)` `local RayIntersectionInfoValue = collision_find_surface_on_ray(startX, startY, startZ, dirX, dirY, dirZ)`
### Parameters ### Parameters
| Field | Type | | Field | Type |
@ -7199,15 +7221,15 @@
| startX | `number` | | startX | `number` |
| startY | `number` | | startY | `number` |
| startZ | `number` | | startZ | `number` |
| endX | `number` | | dirX | `number` |
| endY | `number` | | dirY | `number` |
| endZ | `number` | | dirZ | `number` |
### Returns ### Returns
[RayIntersectionInfo](structs.md#RayIntersectionInfo) [RayIntersectionInfo](structs.md#RayIntersectionInfo)
### C Prototype ### C Prototype
`struct RayIntersectionInfo* collision_find_surface_on_ray(f32 startX, f32 startY, f32 startZ, f32 endX, f32 endY, f32 endZ);` `struct RayIntersectionInfo* collision_find_surface_on_ray(f32 startX, f32 startY, f32 startZ, f32 dirX, f32 dirY, f32 dirZ);`
[:arrow_up_small:](#) [:arrow_up_small:](#)

View File

@ -1374,6 +1374,7 @@
- [obj_explode_and_spawn_coins](functions-4.md#obj_explode_and_spawn_coins) - [obj_explode_and_spawn_coins](functions-4.md#obj_explode_and_spawn_coins)
- [obj_has_behavior](functions-4.md#obj_has_behavior) - [obj_has_behavior](functions-4.md#obj_has_behavior)
- [obj_init_animation](functions-4.md#obj_init_animation) - [obj_init_animation](functions-4.md#obj_init_animation)
- [obj_init_animation_with_accel_and_sound](functions-4.md#obj_init_animation_with_accel_and_sound)
- [obj_is_hidden](functions-4.md#obj_is_hidden) - [obj_is_hidden](functions-4.md#obj_is_hidden)
- [obj_mark_for_deletion](functions-4.md#obj_mark_for_deletion) - [obj_mark_for_deletion](functions-4.md#obj_mark_for_deletion)
- [obj_pitch_to_object](functions-4.md#obj_pitch_to_object) - [obj_pitch_to_object](functions-4.md#obj_pitch_to_object)

View File

@ -880,6 +880,17 @@ void cur_obj_init_animation_with_sound(s32 animIndex) {
o->oSoundStateID = animIndex; o->oSoundStateID = animIndex;
} }
void obj_init_animation_with_accel_and_sound(struct Object *obj, s32 animIndex, f32 accel) {
if (obj != NULL) {
struct Animation **anims = obj->oAnimations;
if (anims != NULL) {
s32 animAccel = (s32)(accel * 65536.0f);
geo_obj_init_animation_accel(&obj->header.gfx, &anims[animIndex], animAccel);
}
obj->oSoundStateID = animIndex;
}
}
void cur_obj_init_animation_with_accel_and_sound(s32 animIndex, f32 accel) { void cur_obj_init_animation_with_accel_and_sound(s32 animIndex, f32 accel) {
struct Animation **anims = o->oAnimations; struct Animation **anims = o->oAnimations;
if (anims != NULL) { if (anims != NULL) {

View File

@ -135,6 +135,7 @@ void obj_scale_xyz(struct Object* obj, f32 xScale, f32 yScale, f32 zScale);
void obj_scale(struct Object *obj, f32 scale); void obj_scale(struct Object *obj, f32 scale);
void cur_obj_scale(f32 scale); void cur_obj_scale(f32 scale);
void cur_obj_init_animation_with_sound(s32 animIndex); void cur_obj_init_animation_with_sound(s32 animIndex);
void obj_init_animation_with_accel_and_sound(struct Object *obj, s32 animIndex, f32 accel);
void cur_obj_init_animation_with_accel_and_sound(s32 animIndex, f32 accel); void cur_obj_init_animation_with_accel_and_sound(s32 animIndex, f32 accel);
void cur_obj_init_animation(s32 animIndex); void cur_obj_init_animation(s32 animIndex);
void obj_init_animation_with_sound(struct Object *obj, const struct Animation * const* animations, s32 animIndex); void obj_init_animation_with_sound(struct Object *obj, const struct Animation * const* animations, s32 animIndex);

View File

@ -24343,6 +24343,28 @@ int smlua_func_obj_init_animation(lua_State* L) {
return 1; return 1;
} }
int smlua_func_obj_init_animation_with_accel_and_sound(lua_State* L) {
if (L == NULL) { return 0; }
int top = lua_gettop(L);
if (top != 3) {
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "obj_init_animation_with_accel_and_sound", 3, top);
return 0;
}
struct Object* obj = (struct Object*)smlua_to_cobject(L, 1, LOT_OBJECT);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "obj_init_animation_with_accel_and_sound"); return 0; }
s32 animIndex = smlua_to_integer(L, 2);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "obj_init_animation_with_accel_and_sound"); return 0; }
f32 accel = smlua_to_number(L, 3);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "obj_init_animation_with_accel_and_sound"); return 0; }
extern void obj_init_animation_with_accel_and_sound(struct Object *obj, s32 animIndex, f32 accel);
obj_init_animation_with_accel_and_sound(obj, animIndex, accel);
return 1;
}
/* /*
int smlua_func_obj_init_animation_with_sound(lua_State* L) { int smlua_func_obj_init_animation_with_sound(lua_State* L) {
if (L == NULL) { return 0; } if (L == NULL) { return 0; }
@ -26213,14 +26235,14 @@ int smlua_func_collision_find_surface_on_ray(lua_State* L) {
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "collision_find_surface_on_ray"); return 0; } if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 2, "collision_find_surface_on_ray"); return 0; }
f32 startZ = smlua_to_number(L, 3); f32 startZ = smlua_to_number(L, 3);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "collision_find_surface_on_ray"); return 0; } if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 3, "collision_find_surface_on_ray"); return 0; }
f32 endX = smlua_to_number(L, 4); f32 dirX = smlua_to_number(L, 4);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 4, "collision_find_surface_on_ray"); return 0; } if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 4, "collision_find_surface_on_ray"); return 0; }
f32 endY = smlua_to_number(L, 5); f32 dirY = smlua_to_number(L, 5);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 5, "collision_find_surface_on_ray"); return 0; } if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 5, "collision_find_surface_on_ray"); return 0; }
f32 endZ = smlua_to_number(L, 6); f32 dirZ = smlua_to_number(L, 6);
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 6, "collision_find_surface_on_ray"); return 0; } if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 6, "collision_find_surface_on_ray"); return 0; }
smlua_push_object(L, LOT_RAYINTERSECTIONINFO, collision_find_surface_on_ray(startX, startY, startZ, endX, endY, endZ)); smlua_push_object(L, LOT_RAYINTERSECTIONINFO, collision_find_surface_on_ray(startX, startY, startZ, dirX, dirY, dirZ));
return 1; return 1;
} }
@ -30470,6 +30492,7 @@ void smlua_bind_functions_autogen(void) {
smlua_bind_function(L, "obj_explode_and_spawn_coins", smlua_func_obj_explode_and_spawn_coins); smlua_bind_function(L, "obj_explode_and_spawn_coins", smlua_func_obj_explode_and_spawn_coins);
smlua_bind_function(L, "obj_has_behavior", smlua_func_obj_has_behavior); smlua_bind_function(L, "obj_has_behavior", smlua_func_obj_has_behavior);
smlua_bind_function(L, "obj_init_animation", smlua_func_obj_init_animation); smlua_bind_function(L, "obj_init_animation", smlua_func_obj_init_animation);
smlua_bind_function(L, "obj_init_animation_with_accel_and_sound", smlua_func_obj_init_animation_with_accel_and_sound);
//smlua_bind_function(L, "obj_init_animation_with_sound", smlua_func_obj_init_animation_with_sound); <--- UNIMPLEMENTED //smlua_bind_function(L, "obj_init_animation_with_sound", smlua_func_obj_init_animation_with_sound); <--- UNIMPLEMENTED
smlua_bind_function(L, "obj_is_hidden", smlua_func_obj_is_hidden); smlua_bind_function(L, "obj_is_hidden", smlua_func_obj_is_hidden);
smlua_bind_function(L, "obj_mark_for_deletion", smlua_func_obj_mark_for_deletion); smlua_bind_function(L, "obj_mark_for_deletion", smlua_func_obj_mark_for_deletion);

View File

@ -156,11 +156,11 @@ struct GlobalObjectCollisionData gGlobalObjectCollisionData = {
.wooden_signpost_seg3_collision_0302DD80 = (Collision*) wooden_signpost_seg3_collision_0302DD80, .wooden_signpost_seg3_collision_0302DD80 = (Collision*) wooden_signpost_seg3_collision_0302DD80,
}; };
struct RayIntersectionInfo* collision_find_surface_on_ray(f32 startX, f32 startY, f32 startZ, f32 endX, f32 endY, f32 endZ) { struct RayIntersectionInfo* collision_find_surface_on_ray(f32 startX, f32 startY, f32 startZ, f32 dirX, f32 dirY, f32 dirZ) {
static struct RayIntersectionInfo info = { 0 }; static struct RayIntersectionInfo info = { 0 };
Vec3f orig = { startX, startY, startZ }; Vec3f orig = { startX, startY, startZ };
Vec3f end = { endX, endY, endZ }; Vec3f dir = { dirX, dirY, dirZ };
find_surface_on_ray(orig, end, &info.surface, info.hitPos); find_surface_on_ray(orig, dir, &info.surface, info.hitPos);
return &info; return &info;
} }

View File

@ -112,7 +112,7 @@ struct GlobalObjectCollisionData {
extern struct GlobalObjectCollisionData gGlobalObjectCollisionData; extern struct GlobalObjectCollisionData gGlobalObjectCollisionData;
struct RayIntersectionInfo* collision_find_surface_on_ray(f32 startX, f32 startY, f32 startZ, f32 endX, f32 endY, f32 endZ); struct RayIntersectionInfo* collision_find_surface_on_ray(f32 startX, f32 startY, f32 startZ, f32 dirX, f32 dirY, f32 dirZ);
struct Surface* get_water_surface_pseudo_floor(void); struct Surface* get_water_surface_pseudo_floor(void);