Commit graph

40 commits

Author SHA1 Message Date
PeachyPeach
6e4373adc9
Fix graph node interpolation (#917)
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows-opengl (push) Waiting to run
Build coop / build-windows-directx (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
Shared graph nodes were incorrectly interpolated, only the first object with a shared graph node was interpolated properly.
Thanks to @Cooliokid956 for noticing that most of node types were **never** interpolated.

- Use a double hashmap to store interpolated data for each graph node and object. All translations, rotations and scales are now interpolated correctly.
- Add `GraphNodeScaleXYZ` type to scale to all 3 dimensions; Add `GEO_SCALE_XYZ` command.

gMtxTbl was also reaching it's limit, so dynamic allocation was added.
2025-08-19 08:15:30 +10:00
Isaac0-dev
9f5ec527d8 properly check if a model is permanent
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows-opengl (push) Waiting to run
Build coop / build-windows-directx (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
2025-06-18 17:18:27 +10:00
Isaac0-dev
d4ca501a5c fix graph node reset memory corruption
by only resetting permanent models (which is all that needs to be reset anyway).
2025-06-18 17:10:01 +10:00
djoslin0
24b92ecc2a
Add a safer version of Lua's require() (#847)
Some checks are pending
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows-opengl (push) Waiting to run
Build coop / build-windows-directx (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
I didn't add standard Lua require() because I've always been
afraid of it. I'm not sure we can guarantee which files it
will read (or not read).

Instead, here is a custom implementation. It should work more
or less the same and allow for more modular code.

For backwards compatibility reasons, all of the lua files in
the base mod folder will be loaded as in the past. Aka one at
a time and alphabetically.

However, now coop will look for Lua files in subdirectories
and will load them in when another Lua file calls require().

The file search order is more reasonable than normal Lua
require(). It will first look for files relative to the
currently running script. If there is no matching relative
file, it will pick from any Lua file that is in any of the
mod's subdirectories.

---------

Co-authored-by: MysterD <myster@d>
2025-06-14 19:49:07 +10:00
Isaac0-dev
27b7c3d823
mario object get optimizations (#840) 2025-06-09 20:04:24 +10:00
Isaac0-dev
d6508def28 revise my latest changes
Some checks are pending
Build coop / build-windows-directx (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
Build coop / build-linux (push) Waiting to run
Build coop / build-steamos (push) Waiting to run
Build coop / build-windows-opengl (push) Waiting to run
2025-06-04 07:58:02 +10:00
Isaac0-dev
f0d6e4331d reset modified graph nodes on network shutdown 2025-06-04 02:36:35 +10:00
PeachyPeach
467b22e939
Gfx set command: v2 + Gfx/Vtx dynamic alloc (#718)
Some checks failed
Build coop / build-ubuntu (push) Has been cancelled
Build coop / build-windows (push) Has been cancelled
Build coop / build-macos-arm (push) Has been cancelled
Build coop / build-macos-intel (push) Has been cancelled
* set_gfx_command part 2

* part 3

* get gfx/vtx from name; copy gfx/vtx

* gfx/vtx dynamic allocation lua

* gfx/vtx_new: don't take level/model/vanilla names

* Clean up gbi constants

* update example

* Isaac review; add gfx_get_next_command and vtx_get_next_vertex

* make all commands length 1; missing NULL checks
2025-04-12 18:19:14 -04:00
Isaac0-dev
a67c096ecb remove some double lookups in dynos
Some checks are pending
Build coop / build-ubuntu (push) Waiting to run
Build coop / build-windows (push) Waiting to run
Build coop / build-macos-arm (push) Waiting to run
Build coop / build-macos-intel (push) Waiting to run
2025-04-08 14:32:25 +10:00
Agent X
5eb1a27eb4 Make custom GEO_ASMs work inside level geo 2025-03-09 12:33:14 -04:00
PeachyPeach
96932f5bf1
Custom geo function and switch nodes with Lua callback (#593) 2024-12-31 10:23:13 +10:00
Isaac0-dev
92fbe54ebd separate dynos pack model and mod owned model ids
to address the grand star late join model bug that can happen with mods like omm.
the bug happened when players have different dynos packs, and during a late join, the model ids are relied on to be the same.
dynos packs can offset the available model ids, therefore desyncing the model used on late join.
2024-11-28 14:02:27 +10:00
Agent X
8525a9a2ee DynOS fixes 2024-06-26 18:51:11 -04:00
Agent X
7dd02b5c4d Massively improve "Global Player Models" option 2024-03-17 20:58:38 -04:00
David Joslin
0e9a060337 Whoops 2023-11-09 17:18:04 -05:00
David Joslin
36b4ffbfe8 Fixed crash in DynOS_Actor_AddCustom() 2023-11-08 19:53:36 -05:00
MysterD
d043fdd22d Added in-game console for DynOS and Lua errors 2023-05-19 04:20:08 -07:00
MysterD
cf7d4bc8d2 Prevent deduplication of area models - it would overwrite the areaIndex 2023-05-18 21:29:57 -07:00
MysterD
688cd3b399 Rewrite how models are loaded and retrieved... yet again 2023-05-16 00:01:10 -07:00
MysterD
2083242b66 Fixed several crashes and errors found in static analysis 2023-05-15 01:15:20 -07:00
MysterD
093754ae1b Fix some memory mismanagement 2023-05-13 02:42:35 -07:00
MysterD
bc73468e64 Load all models into dynamic memory, and store them in a way for reuse 2023-05-12 16:15:35 -07:00
MysterD
5c2474814b Fix crash in DynOS_Actor_AddCustom 2023-05-07 15:48:19 -07:00
MysterD
23d7c83267 Fix mac compile 2022-05-28 21:09:27 -07:00
PeachyPeach
27db236b5d
Various bug fixes + Added is_game_paused() and more background music functions to lua (#93)
Bug: DynOS models with animations cannot swap animations if they are
     loaded via lua (smlua_model_util_get_id and
     obj_set_model_extended).
Fix: DynOS_Actor_GetActorGfx takes a graph node instead of a georef,
     and checks for DynosValidActors graph nodes if georef is NULL.

Bug: The game can crash when calling obj_set_model_extended inside a
     HOOK_ON_OBJECT_RENDER hook.
Fix: The crash happens in smlua_model_util_load_with_pool_and_cache_id
     due to pool being NULL. If the game can't allocate an
     AllocOnlyPool object, use DynOS to generate the graph node.

Bug: warp_to_level and similar functions don't trigger HOOK_ON_WARP.
Fix: Call HOOK_ON_WARP hooks in DynOS_Warp_UpdateWarp and
     DynOS_Warp_UpdateExit after level and mario initialization.

Bug: The game sometimes calls HOOK_ON_OBJECT_RENDER hooks for
     unintended objects.
Fix: Initialize hookRender field to 0 when creating an object.

Bug: Actions can't apply gfx offsets to characters that have an anim
     offset (Waluigi, Wario)
Fix: Add m->curAnimOffset to gfx.pos[1] instead of setting it to
     m->pos[1] + m->curAnimOffset, except during the jumbo star
     cutscene.
2022-05-14 14:28:25 -07:00
EmeraldLoc
2a6c0be1bd
Fixed mac compilation (#88) 2022-05-10 21:20:19 -07:00
MysterD
739a8c655e Actual fix for crash when disconnecting with custom models in level 2022-05-09 09:28:20 -07:00
MysterD
099a2462ed Fixed crash when disconnecting with custom models in the level 2022-05-09 08:40:18 -07:00
MysterD
d75b0e9133 Started working toward allowing disconnection 2022-05-09 07:27:47 -07:00
MysterD
36f2b2218d Possible mac compile fix 2022-04-23 15:54:39 -07:00
MysterD
9e33ce39e6 Automatically disable billboards when a DynOS model uses more than 6 vertices 2022-04-23 03:05:16 -07:00
MysterD
e7cd7ccd6d Fixed finding of renamed custom actors 2022-04-22 18:54:11 -07:00
MysterD
78bda75e45 Massive DynOS refactor for performance/organization 2022-04-19 21:06:18 -07:00
MysterD
8f773ea887 Make DynOS texture lookup use a set for performance 2022-04-19 18:24:26 -07:00
MysterD
12ea360360 Display a message on screen when script errors are found 2022-04-16 22:47:16 -07:00
Prince Frizzy
f51f1d6c4a
Merge in small changes. (#63) 2022-04-16 19:12:12 -07:00
MysterD
202315f260 Rewrite of hash/cache system 2022-04-16 13:05:10 -07:00
MysterD
a925acba6b Fix for dynos mod actors that replace other actors 2022-04-11 22:14:12 -07:00
MysterD
456da82f2f Fix how DynOS loads custom actors 2022-04-11 18:15:54 -07:00
MysterD
8b4a5f6d6d Refactored actor geos in DynOS 2022-04-08 18:56:22 -07:00