From ac9815ed7961267f01d036cd7354e68538ae1d97 Mon Sep 17 00:00:00 2001 From: RallyBlock Date: Mon, 9 Nov 2026 21:05:47 -0500 Subject: [PATCH] Resolve orbit body via getOrbitObject on client --- client.cs | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/client.cs b/client.cs index 551c3db..87b878d 100644 --- a/client.cs +++ b/client.cs @@ -593,11 +593,7 @@ function RPGClient_ApplyCamera(%forceSync) } %now = getSimTime(); %doSync = %forceSync || %now - $RPGClient::LastCamSync >= 40; - %body = %conn.Player; - if (!isObject(%body)) - { - %body = %conn.player; - } + %body = RPGClient_BodyForCamera(%conn); if (!isObject(%body)) { return; @@ -715,6 +711,32 @@ function RPGClient_GetConn() return 0; } +function RPGClient_BodyForCamera(%conn) +{ + if (!isObject(%conn)) + { + return 0; + } + %body = %conn.Player; + if (!isObject(%body)) + { + %body = %conn.player; + } + if (!isObject(%body)) + { + %co = %conn.getControlObject(); + if (isObject(%co) && %co.getClassName() $= "Camera" && isObject(%co.getOrbitObject())) + { + %body = %co.getOrbitObject(); + } + } + if (!isObject(%body) && isObject(%conn.Camera) && isObject(%conn.Camera.getOrbitObject())) + { + %body = %conn.Camera.getOrbitObject(); + } + return %body; +} + function RPGClient_SendHello() { if ($RPGClient::Server)