Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
LethalPhonePOV
Player POV video on LethalPhones handsets using OpenBodyCams. Starts automatically during accepted calls.
By BruhMMods
| Last updated | 2 hours ago |
| Total downloads | 10 |
| Total rating | 0 |
| Categories | Cosmetics AI Generated |
| Dependency string | BruhMMods-LethalPhonePOV-1.0.1 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
BepInEx-BepInExPack
BepInEx pack for Mono Unity games. Preconfigured and ready to use.
Preferred version: 5.4.2305Scoops-LethalPhones
Company Owned Personal Phones. A more interactive alternative to walkie talkies.
Preferred version: 1.3.23Zaggy1024-OpenBodyCams
An open-source implementation of a body/head camera that is displayed on the bottom right monitor in the ship, with the goal of appearing almost identical to the player's actual perspective while providing good performance.
Preferred version: 3.0.12README
LethalPhonePOV 1.0.1
Displays the connected player's point of view on your LethalPhones handset. Accept a normal phone call and open your phone: the video replaces its display for the duration of the call. Hanging up restores the original display.
This is a separate replacement for LethalFaceTime. It uses LethalPhones for the existing call and OpenBodyCams for local rendering. It does not transmit webcam footage or add network messages, prefabs, or RPCs.
For a manual installation, extract the ZIP into the profile root. The DLL
belongs at BepInEx/plugins/LethalPhonePOV/LethalPhonePOV.dll.
It is a normal plugin; do not put it in BepInEx/patchers.
Each player who wants to see video needs this add-on locally. The host does not relay video. A phone-only peer can still use the normal audio call.
Behavior
- Shows the other player's POV, using OpenBodyCams' player targeting API.
- Starts video for an accepted call, after both ends connect.
- No separate FaceTime button or bodycam antenna purchase is required.
- Shows the full camera image with black bars where needed.
- Pauses rendering while the handset is closed; resumes when it opens.
- Restores the normal phone UI at hangup without changing its widgets.
- Retries when the remote phone, camera setup, or handset canvas arrives late.
- Recreates the overlay if the phone model is replaced.
- Releases its own camera textures and restores the vanilla interior culler after the call. A pre-disabled culler is left disabled.
Version 1.0.1 supports player-to-player handset calls. It does not include selfie mode, switchboard video, or creature caller video. Calls to those phone types retain LethalPhones' normal display and audio behavior.
The default video is 384 x 288 at 24 FPS. Change Video/Width, Video/Height,
or Video/FramesPerSecond in BepInEx/config/BruhMMods.LethalPhonePOV.cfg.
OpenBodyCams still supplies its camera perspective, weather, night vision,
and model compatibility behavior.
Verification and first game test
Built against Lethal Company v81 reference assemblies, Unity 2022.3.62, LethalPhones 1.3.23, OpenBodyCams 3.0.12, and BepInEx 5.4.23.5. Compilation, eight call-lifecycle scenarios, and fourteen runtime/IL regression scenarios passed. The runtime tests use engine API shims. Unity rendering and a real multiplayer session have not been run here.
Test one call with both players looking in different directions. Each phone should show the other person's view. Then close and reopen the handset, hang up, and place another call in the opposite direction. Check an indoor caller while the other player is outside.
The log gives separate progress markers:
LethalPhonePOV 1.0.1 ready; Unity frame driver armed.
Video runtime tick via Unity player loop.
Attached video overlay to the local handset PhoneCanvas.
Created independent OpenBodyCams camera, 384x288 at 24 FPS.
Connected call: showing <player>'s POV on the local phone.
First phone video frame rendered.
The pre-canvas fallback may be the first runtime marker instead. It is a real frame callback, not a startup-only self-test. Scene transitions also print a runtime-alive marker. The first-frame message includes the overlay's active state and video rectangle size.
A camera creation message alone is not proof that a frame rendered; the final marker comes from Unity's render pipeline. If video still fails, keep both processes' complete logs from that call. If BepInEx reports that LogOutput.log is locked, include its alternate LogOutput log file for the second process too. Do not mix a host log from one run with a client log from a different run.
What the new logs established
Both supplied 1.0.0 logs confirm startup and two registered Harmony hooks, but neither contains the first video-update marker. No overlay-creation or first-frame marker is present. The screenshot shows a connected audio call. This puts the reported failure before video-display creation; it does not establish exactly why the old runtime stopped or was never called.
1.0.1 replaces that path with a static delegate in the current Unity player loop, before script LateUpdate, plus a pre-canvas fallback. It repairs removed loop entries after scene loads and from the fallback without replacing other mods' entries. Duplicate callbacks do not process a frame twice.
The bootstrap component no longer clears the shared service from OnDestroy. That callback now logs a diagnostic. Runtime resources and event subscriptions are released on application quit; normal session cleanup still happens on hangup, loss of the phone, or lobby exit; death pauses the feed. To turn video off in the running process, use General/Enabled in this mod's config. Removing the plugin requires a game restart.
The host's separate exception is an HNS prefix dereferencing missing player data when OpenBodyCams initializes the ship radar. With HNS present, this version guards that one startup call site. Other radar calls, existing compatibility patches, and initialized seeker restrictions remain unchanged. It does not patch InteractTrigger RPCs or the terminal's TMP caret warning.
This is a candidate fix, not an in-game-verified release. The runtime and guard logic are tested locally; visible video on the actual host and client still needs the game test above.
Implementation references: Unity player-loop API, Unity pre-canvas event, OpenBodyCams ship initialization.
Source and credits
The separate source archive includes build instructions and the automated tests. Only this add-on's DLL is shipped in the install package.
Uninstall
Disable or remove LethalPhonePOV and restart the game. The original dependency DLLs, phone assets, LethalQuantities DLL, and other mods' configs are not edited.