diff --git a/Source/RWTHVRCluster/Public/Events/DisplayClusterEventWrapper.h b/Source/RWTHVRCluster/Public/Events/DisplayClusterEventWrapper.h index f7df285e7f65e60c0df341441a4466e6b4a5d521..da694b66529572fe43628a78c0ae1517b6f89d62 100644 --- a/Source/RWTHVRCluster/Public/Events/DisplayClusterEventWrapper.h +++ b/Source/RWTHVRCluster/Public/Events/DisplayClusterEventWrapper.h @@ -24,9 +24,10 @@ public: void Attach(ObjectType* NewObject) { + checkf(Object == nullptr, TEXT("The event is already attached.")); Object = NewObject; - ObjectId = Object->GetUniqueID(); + ObjectName = Object->GetFullName(); EDisplayClusterOperationMode OperationMode = IDisplayCluster::Get().GetOperationMode(); if (OperationMode == EDisplayClusterOperationMode::Cluster) @@ -45,10 +46,10 @@ public: FMemoryReader MemoryReader(Event.EventData); - uint32 EventObjectId; + FString EventObjectName; // This reads the value! - MemoryReader << EventObjectId; - if (EventObjectId != ObjectId) + MemoryReader << EventObjectName; + if (EventObjectName != ObjectName) { // Event does not belong to this object. return; @@ -100,6 +101,7 @@ public: EDisplayClusterOperationMode OperationMode = IDisplayCluster::Get().GetOperationMode(); if (OperationMode != EDisplayClusterOperationMode::Cluster) { + // Cluster event can be bypassed and function directly called (Object->*MemberFunction)(Forward<ArgTypes>(Arguments)...); } else @@ -112,7 +114,7 @@ public: ClusterEvent.bShouldDiscardOnRepeat = false; FMemoryWriter MemoryWriter(ClusterEvent.EventData); - MemoryWriter << ObjectId; + MemoryWriter << const_cast<FString&>(ObjectName); MemoryWriter << const_cast<FString&>(MethodName); SerializeParameters(&MemoryWriter, Forward<ArgTypes>(Arguments)...); @@ -122,7 +124,7 @@ public: private: const FString MethodName; - uint32 ObjectId; + FString ObjectName; ObjectType* Object = nullptr; FOnClusterEventBinaryListener ClusterEventListenerDelegate; };