diff --git a/skymp5-client/src/view/formView.ts b/skymp5-client/src/view/formView.ts index 82a2c4984..cb5823a1e 100644 --- a/skymp5-client/src/view/formView.ts +++ b/skymp5-client/src/view/formView.ts @@ -510,7 +510,7 @@ export class FormView { screenPoint[2] < 1; if (isOnScreen != this.isOnScreen) { this.isOnScreen = isOnScreen; - if (isOnScreen) { + if (isOnScreen && actor.is3DLoaded()) { actor.queueNiNodeUpdate(); (Game.getPlayer() as Actor).queueNiNodeUpdate(); } diff --git a/skyrim-platform/src/platform_se/skyrim_platform/CallNative.cpp b/skyrim-platform/src/platform_se/skyrim_platform/CallNative.cpp index 63294121f..a7a3a48ab 100644 --- a/skyrim-platform/src/platform_se/skyrim_platform/CallNative.cpp +++ b/skyrim-platform/src/platform_se/skyrim_platform/CallNative.cpp @@ -335,6 +335,8 @@ CallNative::AnySafe CallNative::CallNativeSafe(Arguments& args_) throw NullPointerException("nativeActorPtr"); if (nativeActorPtr->formType.get() != RE::FormType::ActorCharacter) throw std::runtime_error("QueueNiNodeUpdate must be called on Actor"); + if (!nativeActorPtr->GetCurrent3D()) + return; // this is called QueueNiNodeUpdate in skse nativeActorPtr->DoReset3D(false); });