Skip to content
Snippets Groups Projects
Commit 0b093b02 authored by Sebastian Pape's avatar Sebastian Pape
Browse files

Merge branch 'develop' into 'master'

Develop

See merge request VR-Group/unreal-development/unreal-cave-overlay!10
parents 7293e584 1b64eda8
No related branches found
No related tags found
1 merge request!10Develop
...@@ -135,11 +135,30 @@ void ACAVEOverlayController::PostInitializeComponents() ...@@ -135,11 +135,30 @@ void ACAVEOverlayController::PostInitializeComponents()
void ACAVEOverlayController::CycleDoorType() void ACAVEOverlayController::CycleDoorType()
{ {
Door_Current_Mode = static_cast<EDoor_Mode>((Door_Current_Mode + 1) % DOOR_NUM_MODES); Door_Current_Mode = static_cast<EDoor_Mode>((Door_Current_Mode + 1) % DOOR_NUM_MODES);
SetDoorMode(Door_Current_Mode);
IDisplayClusterClusterManager* const Manager = IDisplayCluster::Get().GetClusterMgr();
if (Manager)
{
FDisplayClusterClusterEvent cluster_event;
cluster_event.Name = "CAVEOverlay Change Door to " + Door_Mode_Names[Door_Current_Mode];
cluster_event.Type = "DoorChange";
cluster_event.Category = "CAVEOverlay";
cluster_event.Parameters.Add("NewDoorState", FString::FromInt(Door_Current_Mode));
Manager->EmitClusterEvent(cluster_event, true);
}
}
void ACAVEOverlayController::HandleClusterEvent(const FDisplayClusterClusterEvent& Event)
{
if (Event.Category.Equals("CAVEOverlay") && Event.Type.Equals("DoorChange") && Event.Parameters.Contains("NewDoorState"))
{
SetDoorMode(static_cast<EDoor_Mode>(FCString::Atoi(*Event.Parameters["NewDoorState"])));
}
} }
void ACAVEOverlayController::SetDoorMode(EDoor_Mode M) void ACAVEOverlayController::SetDoorMode(EDoor_Mode NewMode)
{ {
Door_Current_Mode = NewMode;
switch (Door_Current_Mode) switch (Door_Current_Mode)
{ {
case EDoor_Mode::DOOR_DEBUG: case EDoor_Mode::DOOR_DEBUG:
...@@ -182,16 +201,22 @@ void ACAVEOverlayController::BeginPlay() ...@@ -182,16 +201,22 @@ void ACAVEOverlayController::BeginPlay()
Super::BeginPlay(); Super::BeginPlay();
//Read situation //Read situation
if (IDisplayCluster::Get().GetOperationMode() == EDisplayClusterOperationMode::Cluster) { if (IDisplayCluster::Get().GetOperationMode() == EDisplayClusterOperationMode::Cluster)
{
auto ClusterConfigCustom = IDisplayCluster::Get().GetConfigMgr()->GetConfigCustom(); auto ClusterConfigCustom = IDisplayCluster::Get().GetConfigMgr()->GetConfigCustom();
bCAVE_Mode = ClusterConfigCustom.Args.Contains("Hardware_Platform") && ClusterConfigCustom.Args.Find("Hardware_Platform")->Equals("aixcave", ESearchCase::IgnoreCase); bCAVE_Mode = ClusterConfigCustom.Args.Contains("Hardware_Platform") && ClusterConfigCustom.Args.Find("Hardware_Platform")->Equals("aixcave", ESearchCase::IgnoreCase);
} }
if (!bCAVE_Mode) return; // Not our business if (!bCAVE_Mode) return; // Not our business
//Input config //Input config
InputComponent->BindAction("Action4", EInputEvent::IE_Pressed, this, &ACAVEOverlayController::CycleDoorType);
InputComponent->BindKey(EKeys::F10, EInputEvent::IE_Pressed, this, &ACAVEOverlayController::CycleDoorType); InputComponent->BindKey(EKeys::F10, EInputEvent::IE_Pressed, this, &ACAVEOverlayController::CycleDoorType);
IDisplayClusterClusterManager* ClusterManager = IDisplayCluster::Get().GetClusterMgr();
if (ClusterManager && !ClusterEventListenerDelegate.IsBound())
{
ClusterEventListenerDelegate = FOnClusterEventListener::CreateUObject(this, &ACAVEOverlayController::HandleClusterEvent);
ClusterManager->AddClusterEventListener(ClusterEventListenerDelegate);
}
//Determine the screen-type for later usage //Determine the screen-type for later usage
if (IDisplayCluster::Get().GetClusterMgr()->GetNodeId().Equals(Screen_Main, ESearchCase::IgnoreCase)) if (IDisplayCluster::Get().GetClusterMgr()->GetNodeId().Equals(Screen_Main, ESearchCase::IgnoreCase))
...@@ -226,6 +251,17 @@ void ACAVEOverlayController::BeginPlay() ...@@ -226,6 +251,17 @@ void ACAVEOverlayController::BeginPlay()
} }
} }
void ACAVEOverlayController::EndPlay(const EEndPlayReason::Type EndPlayReason)
{
IDisplayClusterClusterManager* ClusterManager = IDisplayCluster::Get().GetClusterMgr();
if (ClusterManager && ClusterEventListenerDelegate.IsBound())
{
ClusterManager->RemoveClusterEventListener(ClusterEventListenerDelegate);
}
Super::EndPlay(EndPlayReason);
}
float ACAVEOverlayController::CalculateOpacityFromPosition(FVector Position) float ACAVEOverlayController::CalculateOpacityFromPosition(FVector Position)
{ {
return FMath::Max( return FMath::Max(
...@@ -242,13 +278,8 @@ bool ACAVEOverlayController::PositionInDoorOpening(FVector Position) ...@@ -242,13 +278,8 @@ bool ACAVEOverlayController::PositionInDoorOpening(FVector Position)
void ACAVEOverlayController::RefreshPawnComponents() void ACAVEOverlayController::RefreshPawnComponents()
{ {
TArray<UDisplayClusterSceneComponent*> Pawn_Components; Cave_Origin = Player_Pawn->GetCaveOriginComponent();
Player_Pawn->GetComponents<UDisplayClusterSceneComponent>(Pawn_Components); Shutter_Glasses = Player_Pawn->GetShutterGlassesComponent();
for (UDisplayClusterSceneComponent* c : Pawn_Components)
{
if (c->GetName().Equals("cave_origin", ESearchCase::IgnoreCase)) Cave_Origin = c;
if (c->GetName().Equals("shutter_glasses", ESearchCase::IgnoreCase)) Shutter_Glasses = c;
}
} }
// Called every frame // Called every frame
...@@ -258,7 +289,11 @@ void ACAVEOverlayController::Tick(float DeltaTime) ...@@ -258,7 +289,11 @@ void ACAVEOverlayController::Tick(float DeltaTime)
if (!bCAVE_Mode) return; // Not our business if (!bCAVE_Mode) return; // Not our business
RefreshPawnComponents(); if (!Cave_Origin || !Shutter_Glasses)
{
RefreshPawnComponents();
}
if (!bAttached && Cave_Origin) if (!bAttached && Cave_Origin)
{ {
AttachToComponent(Cave_Origin, FAttachmentTransformRules::SnapToTargetNotIncludingScale); AttachToComponent(Cave_Origin, FAttachmentTransformRules::SnapToTargetNotIncludingScale);
...@@ -266,7 +301,8 @@ void ACAVEOverlayController::Tick(float DeltaTime) ...@@ -266,7 +301,8 @@ void ACAVEOverlayController::Tick(float DeltaTime)
} }
//FPS Counter //FPS Counter
if (Overlay) { if (Overlay)
{
if (Door_Current_Mode == EDoor_Mode::DOOR_DEBUG && ContainsFString(Screens_FPS, IDisplayCluster::Get().GetClusterMgr()->GetNodeId())) if (Door_Current_Mode == EDoor_Mode::DOOR_DEBUG && ContainsFString(Screens_FPS, IDisplayCluster::Get().GetClusterMgr()->GetNodeId()))
{ {
Overlay->FPS->SetText(FText::FromString(FString::Printf(TEXT("FPS: %.1f"), 1.0f / DeltaTime))); Overlay->FPS->SetText(FText::FromString(FString::Printf(TEXT("FPS: %.1f"), 1.0f / DeltaTime)));
...@@ -276,7 +312,7 @@ void ACAVEOverlayController::Tick(float DeltaTime) ...@@ -276,7 +312,7 @@ void ACAVEOverlayController::Tick(float DeltaTime)
Overlay->FPS->SetText(FText::FromString("")); Overlay->FPS->SetText(FText::FromString(""));
} }
} }
if (!Shutter_Glasses) return; //Display Cluster not initialized if (!Shutter_Glasses) return; //Display Cluster not initialized
//Tape Logic //Tape Logic
......
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
#include "Materials/MaterialInstanceDynamic.h" #include "Materials/MaterialInstanceDynamic.h"
#include "DisplayClusterExtensions/Public/VirtualRealityPawn.h" #include "DisplayClusterExtensions/Public/VirtualRealityPawn.h"
#include "DisplayCluster/Public/DisplayClusterSceneComponent.h" #include "DisplayCluster/Public/DisplayClusterSceneComponent.h"
#include "Cluster/DisplayClusterClusterEvent.h"
#include "Cluster/IDisplayClusterClusterManager.h"
#include "CAVEOverlayController.generated.h" #include "CAVEOverlayController.generated.h"
DECLARE_LOG_CATEGORY_EXTERN(LogCAVEOverlay, Log, All); DECLARE_LOG_CATEGORY_EXTERN(LogCAVEOverlay, Log, All);
...@@ -20,11 +22,13 @@ UCLASS() ...@@ -20,11 +22,13 @@ UCLASS()
class CAVEOVERLAY_API ACAVEOverlayController : public AActor class CAVEOVERLAY_API ACAVEOverlayController : public AActor
{ {
GENERATED_BODY() GENERATED_BODY()
public: public:
ACAVEOverlayController(); ACAVEOverlayController();
protected: protected:
// Called when the game starts or when spawned // Called when the game starts or when spawned
virtual void BeginPlay() override; virtual void BeginPlay() override;
virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override;
virtual void PostInitializeComponents() override; virtual void PostInitializeComponents() override;
private: private:
...@@ -68,8 +72,12 @@ private: ...@@ -68,8 +72,12 @@ private:
bool bAttached = false; bool bAttached = false;
void RefreshPawnComponents(); void RefreshPawnComponents();
AVirtualRealityPawn* Player_Pawn; AVirtualRealityPawn* Player_Pawn;
UDisplayClusterSceneComponent* Cave_Origin; USceneComponent* Cave_Origin;
UDisplayClusterSceneComponent* Shutter_Glasses; USceneComponent* Shutter_Glasses;
//Cluster Events
FOnClusterEventListener ClusterEventListenerDelegate;
void HandleClusterEvent(const FDisplayClusterClusterEvent& Event);
public: public:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment