isle-portable/extensions/include/extensions/multiplayer
foxtacles 1a8c6c70ea
Add disassemble/assemble emote (#13)
* Add stateful multi-part emote system with disassemble/reassemble

Introduces a generalized multi-part emote framework where emotes can have
two phases. The first trigger plays phase 1 and freezes the character at its
last frame; the second trigger plays phase 2 to restore normal state.

Movement is blocked for the entire duration of a multi-part emote (from
phase 1 start through frozen state to phase 2 completion). The frozen
state is synced to all peers via customizeFlags bits in PlayerStateMsg,
so new joiners see disassembled players correctly.

The emote table is now a 2D array (g_emoteAnims[][2]) where [1] is the
phase-2 animation name (nullptr for one-shot emotes). Adding future
multi-part emotes only requires a new row in the table.

https://claude.ai/code/session_01L5FiuVFUqASR93iJcaXfEi

* Fix emote movement blocking and frozen state sync

Move movement blocking from CalculateTransform hook (which broke the
camera by skipping p_transform output) to ThirdPersonCamera::Tick where
it zeroes speed/velocity directly. Remove ShouldBlockMovement and
ShouldInvertMovement hooks entirely.

Rebuild frozen emote animation cache in InitAnimCaches when the frozen
state was set before the ROI was available (state message arrived before
world was ready).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Clean up emote branch: remove unused include, extract ClearFrozenState helper

- Remove unused multiplayer.h include and using-directive from legopathactor.cpp
- Extract ClearFrozenState() to DRY up 4 identical frozen state reset blocks
- Clarify bit-encoding comment with mask value and emote ID limit

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-10 02:18:37 +01:00
..
platforms/emscripten Extract PlatformCallbacks interface and consolidate Emscripten files 2026-03-02 15:46:37 -08:00
animutils.h 3rd person camera (#3) 2026-03-07 01:38:45 +01:00
characteranimator.h Add disassemble/assemble emote (#13) 2026-03-10 02:18:37 +01:00
charactercloner.h Implement display actors (#6) 2026-03-07 18:02:53 +01:00
charactercustomizer.h Always derive display actor from actorId when no INI actor 2026-03-08 10:07:22 -07:00
customizestate.h Character customization (#8) 2026-03-07 23:20:55 +01:00
namebubblerenderer.h Add player name bubbles above remote players' heads in multiplayer (#7) 2026-03-07 19:38:33 +01:00
networkmanager.h Extract CharacterAnimator component, EncodeUsername utility, replace C stdlib with SDL 2026-03-08 10:48:26 -07:00
networktransport.h Add room management, relay capacity, and rejection handling 2026-03-01 14:37:08 -08:00
platformcallbacks.h Extract PlatformCallbacks interface and consolidate Emscripten files 2026-03-02 15:46:37 -08:00
protocol.h Add disassemble/assemble emote (#13) 2026-03-10 02:18:37 +01:00
remoteplayer.h Add disassemble/assemble emote (#13) 2026-03-10 02:18:37 +01:00
thirdpersoncamera.h Add disassemble/assemble emote (#13) 2026-03-10 02:18:37 +01:00
worldstatesync.h Sync sky light (#9) 2026-03-08 05:55:00 +01:00