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)