diff --git a/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp b/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp index 2f2d1339..dc9d266a 100644 --- a/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp +++ b/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp @@ -693,6 +693,11 @@ void ASGPawn::OnRealLeftHandOverlapBegins( return; } + if (OtherActor == LeftHandGrabState.GrabbedActor) + { + return; + } + Pimpl->RegisterLeftHandOverlappedActor(OtherActor); } @@ -733,6 +738,11 @@ void ASGPawn::OnRealRightHandOverlapBegins( return; } + if (OtherActor == RightHandGrabState.GrabbedActor) + { + return; + } + Pimpl->RegisterRightHandOverlappedActor(OtherActor); } @@ -1417,6 +1427,15 @@ void ASGPawn::Grab(USGVirtualHandComponent* Hand, AActor* Actor) Pimpl->DisableActorPhysics(Actor); } + if (Hand->IsRight()) + { + Pimpl->UnregisterRightHandOverlappedActor(Actor); + } + else + { + Pimpl->UnregisterLeftHandOverlappedActor(Actor); + } + #if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 2 const bool bAttached = Actor->AttachToComponent(Hand, MoveTemp(AttachmentRules), SocketName); if (bAttached)