EmoteLib
Emote wheel UI and API for playing emotes in Roadside Research. Supports hotkeys, third-person camera, and custom animations via asset bundles.
CHANGELOG
Changelog
1.1.0
New features
- Custom emotes now auto-stop at the end of their animation clip (matches base-game emote behavior). Set
AnimationClip.isLooping = truein the bundle, or callCustomAnimationPlayer.RegisterClip(name, clip, loop: true), to keep looping until the user stops it. RegisterClipnow accepts an optionalbool? loopparameter. Default (null) reads the clip's ownisLoopingflag.- Added
Wheel/InnerRadius,Wheel/OuterRadius,Wheel/SlotsPerPage,Wheel/ScrollCooldownSecondsfor wheel sizing and pacing. - Added
Wheel/CloseOnSelectto close the wheel on a left-click selection. - Added
Wheel/ShowHotkeyBadgesto hide per-slot hotkey labels. - Added
Camera/RestoreFirstPersonOnExitto opt out of the post-emote first-person snap. - Added
Hotkeys/StopEmoteKey— a global cancel key that works without opening the wheel. - Added support and issue-tracker links to README.
Fixes
- Fixed camera being stuck in third person after a game emote finished playing naturally. The game's internal emote-lifetime coroutine doesn't route natural completion through
StopEmote(), so the existingStopEmotepostfix only caught explicit cancels. Replaced with polling onIsEmotingin the wheel component, which catches both natural completion and explicit stops. - Fixed
StopGameInstantlyNullReferenceException spam caused by IL2CPP method deduplication — multiple Minigame subclasses share the same native function pointer for empty overrides, so patchingSpinning.StopGameInstantly(bool)inadvertently detoured all of them. Moved to patching the non-virtual no-argMinigame.StopGameInstantly()with a type check instead. - Removed
CompleteMinigameFunctionalitypatch for the same dedup reason (covered byEndMinigameFunctionalitywhich has a unique RVA for Spinning). - Sign-spinning minigame dance emote no longer forces third person — the camera stays first-person for the auto-triggered dance regardless of
Camera/ThirdPersonOnEmote. All other emotes (wheel, hotkeys, base-game 1-8) are unaffected.
1.0.0
- Initial release
- Radial emote wheel (hold E to open, release on a slot to play)
- Per-slot hotkey bindings for all 8 emote slots
- Automatic third-person camera while emoting (toggle via config)
EmoteAPIfor triggering emotes from other mods- Custom animation loading from asset bundles