diff --git a/Source/DasherVR/Private/SDasherWidget.cpp b/Source/DasherVR/Private/SDasherWidget.cpp index a378e0008b777ee9b4f4027162ca55c4a21add86..fa9f59f062a01682aaf88e450b0cab42940f0def 100644 --- a/Source/DasherVR/Private/SDasherWidget.cpp +++ b/Source/DasherVR/Private/SDasherWidget.cpp @@ -60,11 +60,9 @@ FReply SDasherWidget::HandleMouseDownEvent(const FGeometry& Geometry, const FPoi if(URWTHVRUtilities::IsRoomMountedMode()) { FDisplayClusterClusterEventBinary ClusterEvent; - ClusterEvent.EventId = DasherEventID; - ClusterEvent.EventData.SetNumUninitialized(1); - ClusterEvent.EventData[0] = static_cast<uint8>(DasherEventType::Input_MouseDown); + ClusterEvent.EventId = DasherEventID + static_cast<uint8>(DasherEventType::Input_MouseDown); IDisplayCluster::Get().GetClusterMgr()->EmitClusterEventBinary(ClusterEvent, false); - + UE_LOG(LogTemp, Log, TEXT("MouseDownSend")); return FReply::Handled().LockMouseToWidget(AsShared()); } @@ -84,9 +82,7 @@ FReply SDasherWidget::HandleMouseUpEvent(const FGeometry& Geometry, const FPoint if(URWTHVRUtilities::IsRoomMountedMode()) { FDisplayClusterClusterEventBinary ClusterEvent; - ClusterEvent.EventId = DasherEventID; - ClusterEvent.EventData.SetNumUninitialized(1); - ClusterEvent.EventData[0] = static_cast<uint8>(DasherEventType::Input_MouseUp); + ClusterEvent.EventId = ClusterEvent.EventId = DasherEventID + static_cast<uint8>(DasherEventType::Input_MouseUp); IDisplayCluster::Get().GetClusterMgr()->EmitClusterEventBinary(ClusterEvent, false); return FReply::Handled().ReleaseMouseLock(); } @@ -110,9 +106,7 @@ FReply SDasherWidget::HandleMouseDoubleClickEvent(const FGeometry& Geometry, con if(URWTHVRUtilities::IsRoomMountedMode()) { FDisplayClusterClusterEventBinary ClusterEvent; - ClusterEvent.EventId = DasherEventID; - ClusterEvent.EventData.SetNumUninitialized(1); - ClusterEvent.EventData[0] = static_cast<uint8>(DasherEventType::Input_MouseDown); + ClusterEvent.EventId = ClusterEvent.EventId = DasherEventID + static_cast<uint8>(DasherEventType::Input_MouseDown); IDisplayCluster::Get().GetClusterMgr()->EmitClusterEventBinary(ClusterEvent, false); return FReply::Handled(); } @@ -146,13 +140,12 @@ bool SDasherWidget::GetScreenCoords(screenint& iX, screenint& iY, Dasher::CDashe void SDasherWidget::HandleClusterEvent(const FDisplayClusterClusterEventBinary& Event) { - if(Event.EventId != DasherEventID) return; - - switch(static_cast<DasherEventType>(Event.EventData[0])) + switch(static_cast<DasherEventType>(Event.EventId - DasherEventID)) { case DasherEventType::Input_MouseDown: DasherMainInterface->KeyDown(FDateTime::Now().GetSecond() + FDateTime::Now().GetMillisecond(), Dasher::Keys::Primary_Input); MouseDownListeners.ExecuteIfBound(); + UE_LOG(LogTemp, Log, TEXT("MouseDownReceived")); break; case DasherEventType::Input_MouseUp: DasherMainInterface->KeyUp(FDateTime::Now().GetSecond() + FDateTime::Now().GetMillisecond(), Dasher::Keys::Primary_Input); @@ -161,9 +154,9 @@ void SDasherWidget::HandleClusterEvent(const FDisplayClusterClusterEventBinary& case DasherEventType::Tick: double currentTime = 0; - FMemory::Memcpy(¤tTime, &Event.EventData[1], sizeof(currentTime)); - FMemory::Memcpy(&CursorPosition.x, &Event.EventData[1] + sizeof(currentTime), sizeof(CursorPosition.x)); - FMemory::Memcpy(&CursorPosition.y, &Event.EventData[1] + sizeof(currentTime) + sizeof(CursorPosition.x), sizeof(CursorPosition.y)); + FMemory::Memcpy(¤tTime, Event.EventData.GetData(), sizeof(currentTime)); + FMemory::Memcpy(&CursorPosition.x, Event.EventData.GetData() + sizeof(currentTime), sizeof(CursorPosition.x)); + FMemory::Memcpy(&CursorPosition.y, Event.EventData.GetData() + sizeof(currentTime) + sizeof(CursorPosition.x), sizeof(CursorPosition.y)); DasherMainInterface->Tick(static_cast<unsigned long>(currentTime * 1000.0)); break; @@ -305,16 +298,13 @@ void SDasherWidget::Tick(const FGeometry& AllottedGeometry, const double InCurre else if(URWTHVRUtilities::IsPrimaryNode()) { - UE_LOG(LogTemp, Log, TEXT("EventSend: %d, %d"), CursorPosition.x, CursorPosition.y); - FDisplayClusterClusterEventBinary ClusterEvent; - ClusterEvent.EventId = DasherEventID; - ClusterEvent.EventData.SetNumUninitialized(sizeof(InCurrentTime) + sizeof(CursorPosition.x) + sizeof(CursorPosition.y) + 1); + ClusterEvent.EventId = ClusterEvent.EventId = DasherEventID + static_cast<uint8>(DasherEventType::Tick); + ClusterEvent.EventData.SetNumUninitialized(sizeof(InCurrentTime) + sizeof(CursorPosition.x) + sizeof(CursorPosition.y)); - ClusterEvent.EventData[0] = static_cast<uint8>(DasherEventType::Tick); - FMemory::Memcpy(&ClusterEvent.EventData[1], &InCurrentTime, sizeof(InCurrentTime)); - FMemory::Memcpy(&ClusterEvent.EventData[1] + sizeof(InCurrentTime), &CursorPosition.x, sizeof(CursorPosition.x)); - FMemory::Memcpy(&ClusterEvent.EventData[1] + sizeof(InCurrentTime) + sizeof(CursorPosition.x), &CursorPosition.y, sizeof(CursorPosition.y)); + FMemory::Memcpy(ClusterEvent.EventData.GetData(), &InCurrentTime, sizeof(InCurrentTime)); + FMemory::Memcpy(ClusterEvent.EventData.GetData() + sizeof(InCurrentTime), &CursorPosition.x, sizeof(CursorPosition.x)); + FMemory::Memcpy(ClusterEvent.EventData.GetData() + sizeof(InCurrentTime) + sizeof(CursorPosition.x), &CursorPosition.y, sizeof(CursorPosition.y)); IDisplayCluster::Get().GetClusterMgr()->EmitClusterEventBinary(ClusterEvent, false); } diff --git a/Source/DasherVR/Public/SDasherWidget.h b/Source/DasherVR/Public/SDasherWidget.h index 563f607d7a5d2ee7ca2ebc33b234c83f149c4e7c..6b6f74603623baab4861e96fe86c1bbf468a4e0f 100644 --- a/Source/DasherVR/Public/SDasherWidget.h +++ b/Source/DasherVR/Public/SDasherWidget.h @@ -175,7 +175,7 @@ private: //CAVE Sync FOnClusterEventBinaryListener ClusterEventListener; - inline static int32 DasherEventID = 424242; + inline static int32 DasherEventID = 424240; protected: // stores color information