You are viewing a potentially older version of this package. View all versions.
Deja-EmoteLib-1.0.0 icon

EmoteLib

Emote wheel UI and API for playing emotes in Roadside Research. Supports hotkeys, third-person camera, and custom animations via asset bundles.

By Deja
Date uploaded 3 weeks ago
Version 1.0.0
Download link Deja-EmoteLib-1.0.0.zip
Downloads 26
Dependency string Deja-EmoteLib-1.0.0

This mod requires the following mods to function

BepInEx-BepInExPack_IL2CPP-6.0.755 icon
BepInEx-BepInExPack_IL2CPP

BepInEx pack for IL2CPP x64 Unity games. Preconfigured and ready to use.

Preferred version: 6.0.755

README

EmoteLib

An emote wheel and emote API for Roadside Research.

Features

  • Emote Wheel — Hold a key (default: E) to open a radial emote selector. Release while hovering over a slot to play that emote.
  • Hotkeys — Bind any of the 8 emote slots to individual keys for quick access.
  • Third-Person Camera — Automatically switches to third person when emoting so you can see yourself. Configurable per-user.
  • Custom Animation Support — Load custom emote animations from asset bundles.
  • Emote API — Other mods can trigger emotes programmatically via EmoteAPI.

Configuration

Settings are in BepInEx/config/com.emotelib.roadsideresearch.cfg, generated on first launch.

Setting Default Description
ToggleKey E Hold to open the emote wheel
ThirdPersonOnEmote true Switch to third person while emoting
EmoteSlot1-8 None Hotkey bindings for each emote slot

Installation

  1. Install BepInEx IL2CPP if you haven't already.
  2. Launch the game once to generate interop assemblies.
  3. Place EmoteLib.dll in BepInEx/plugins/.
  4. Launch the game. Hold E to open the emote wheel.

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 = true in the bundle, or call CustomAnimationPlayer.RegisterClip(name, clip, loop: true), to keep looping until the user stops it.
  • RegisterClip now accepts an optional bool? loop parameter. Default (null) reads the clip's own isLooping flag.
  • Added Wheel/InnerRadius, Wheel/OuterRadius, Wheel/SlotsPerPage, Wheel/ScrollCooldownSeconds for wheel sizing and pacing.
  • Added Wheel/CloseOnSelect to close the wheel on a left-click selection.
  • Added Wheel/ShowHotkeyBadges to hide per-slot hotkey labels.
  • Added Camera/RestoreFirstPersonOnExit to 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 existing StopEmote postfix only caught explicit cancels. Replaced with polling on IsEmoting in the wheel component, which catches both natural completion and explicit stops.
  • Fixed StopGameInstantly NullReferenceException spam caused by IL2CPP method deduplication — multiple Minigame subclasses share the same native function pointer for empty overrides, so patching Spinning.StopGameInstantly(bool) inadvertently detoured all of them. Moved to patching the non-virtual no-arg Minigame.StopGameInstantly() with a type check instead.
  • Removed CompleteMinigameFunctionality patch for the same dedup reason (covered by EndMinigameFunctionality which 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)
  • EmoteAPI for triggering emotes from other mods
  • Custom animation loading from asset bundles