diff --git a/SpatialGDK/Source/SpatialGDK/Private/Interop/SpatialReceiver.cpp b/SpatialGDK/Source/SpatialGDK/Private/Interop/SpatialReceiver.cpp index 9329fee66c..84faea6a07 100644 --- a/SpatialGDK/Source/SpatialGDK/Private/Interop/SpatialReceiver.cpp +++ b/SpatialGDK/Source/SpatialGDK/Private/Interop/SpatialReceiver.cpp @@ -1213,8 +1213,8 @@ void USpatialReceiver::HandleRPC(const Worker_ComponentUpdateOp& Op) UFunction* Function = ClassInfo.RPCs[Payload.Index]; const FRPCInfo& RPCInfo = ClassInfoManager->GetRPCInfo(TargetObject, Function); - if (!IncomingRPCs.ObjectHasRPCsQueuedOfType(ObjectRef, RPCInfo.Type) - && !IncomingRPCs.ObjectHasRPCsQueuedOfType(ObjectRef, ESchemaComponentType::SCHEMA_Invalid)) + if (!IncomingRPCs.ObjectHasRPCsQueuedOfType(ObjectRef.Entity, RPCInfo.Type) + && !IncomingRPCs.ObjectHasRPCsQueuedOfType(ObjectRef.Entity, ESchemaComponentType::SCHEMA_Invalid)) { // Apply if possible, queue otherwise if (ApplyRPC(*Params)) @@ -1642,8 +1642,8 @@ void USpatialReceiver::ProcessQueuedActorRPCsOnEntityCreation(AActor* Actor, RPC const FUnrealObjectRef ObjectRef = PackageMap->GetUnrealObjectRefFromObject(Actor); check(ObjectRef != FUnrealObjectRef::UNRESOLVED_OBJECT_REF); - if (!IncomingRPCs.ObjectHasRPCsQueuedOfType(ObjectRef, RPCInfo.Type) - && !IncomingRPCs.ObjectHasRPCsQueuedOfType(ObjectRef, ESchemaComponentType::SCHEMA_Invalid)) + if (!IncomingRPCs.ObjectHasRPCsQueuedOfType(ObjectRef.Entity, RPCInfo.Type) + && !IncomingRPCs.ObjectHasRPCsQueuedOfType(ObjectRef.Entity, ESchemaComponentType::SCHEMA_Invalid)) { if (ApplyRPC(Actor, Function, RPC, FString())) { diff --git a/SpatialGDK/Source/SpatialGDK/Private/Interop/SpatialSender.cpp b/SpatialGDK/Source/SpatialGDK/Private/Interop/SpatialSender.cpp index c8a3a8d6cc..298e4da2a2 100644 --- a/SpatialGDK/Source/SpatialGDK/Private/Interop/SpatialSender.cpp +++ b/SpatialGDK/Source/SpatialGDK/Private/Interop/SpatialSender.cpp @@ -1362,7 +1362,7 @@ void USpatialSender::ProcessRPC(FPendingRPCParamsPtr Params) const FRPCInfo& RPCInfo = ClassInfoManager->GetRPCInfo(TargetObject.Get(), Function); bool bRPCProcessed = false; - if (!OutgoingRPCs.ObjectHasRPCsQueuedOfType(Params->ObjectRef, RPCInfo.Type)) + if (!OutgoingRPCs.ObjectHasRPCsQueuedOfType(Params->ObjectRef.Entity, RPCInfo.Type)) { if (SendRPC(*Params)) { diff --git a/SpatialGDK/Source/SpatialGDK/Private/Utils/RPCContainer.cpp b/SpatialGDK/Source/SpatialGDK/Private/Utils/RPCContainer.cpp index 81eb806062..d969286a62 100644 --- a/SpatialGDK/Source/SpatialGDK/Private/Utils/RPCContainer.cpp +++ b/SpatialGDK/Source/SpatialGDK/Private/Utils/RPCContainer.cpp @@ -15,7 +15,7 @@ FPendingRPCParams::FPendingRPCParams(const FUnrealObjectRef& InTargetObjectRef, void FRPCContainer::QueueRPC(FPendingRPCParamsPtr Params, ESchemaComponentType Type) { - FArrayOfParams& ArrayOfParams = QueuedRPCs.FindOrAdd(Type).FindOrAdd(Params->ObjectRef); + FArrayOfParams& ArrayOfParams = QueuedRPCs.FindOrAdd(Type).FindOrAdd(Params->ObjectRef.Entity); ArrayOfParams.Push(MoveTemp(Params)); } @@ -54,13 +54,11 @@ void FRPCContainer::ProcessRPCs(const FProcessRPCDelegate& FunctionToApply) } } -bool FRPCContainer::ObjectHasRPCsQueuedOfType(const FUnrealObjectRef& TargetObjectRef, ESchemaComponentType Type) const +bool FRPCContainer::ObjectHasRPCsQueuedOfType(const Worker_EntityId& EntityId, ESchemaComponentType Type) const { - const FRPCMap* MapOfQueues = QueuedRPCs.Find(Type); - if(MapOfQueues) + if(const FRPCMap* MapOfQueues = QueuedRPCs.Find(Type)) { - const FArrayOfParams* RPCList = MapOfQueues->Find(TargetObjectRef); - if(RPCList) + if(const FArrayOfParams* RPCList = MapOfQueues->Find(EntityId)) { return (RPCList->Num() > 0); } diff --git a/SpatialGDK/Source/SpatialGDK/Public/Utils/RPCContainer.h b/SpatialGDK/Source/SpatialGDK/Public/Utils/RPCContainer.h index 801136d58d..5444e31f77 100644 --- a/SpatialGDK/Source/SpatialGDK/Public/Utils/RPCContainer.h +++ b/SpatialGDK/Source/SpatialGDK/Public/Utils/RPCContainer.h @@ -27,11 +27,11 @@ class FRPCContainer public: void QueueRPC(FPendingRPCParamsPtr Params, ESchemaComponentType Type); void ProcessRPCs(const FProcessRPCDelegate& FunctionToApply); - bool ObjectHasRPCsQueuedOfType(const FUnrealObjectRef& TargetObjectRef, ESchemaComponentType Type) const; + bool ObjectHasRPCsQueuedOfType(const Worker_EntityId& EntityId, ESchemaComponentType Type) const; private: using FArrayOfParams = TArray; - using FRPCMap = TMap; + using FRPCMap = TMap; using RPCContainerType = TMap; void ProcessRPCs(const FProcessRPCDelegate& FunctionToApply, FArrayOfParams& RPCList);