diff --git a/Source/nDisplayExtensions/nDisplayExtensions.Build.cs b/Source/DisplayClusterExtensions/DisplayClusterExtensions.Build.cs similarity index 79% rename from Source/nDisplayExtensions/nDisplayExtensions.Build.cs rename to Source/DisplayClusterExtensions/DisplayClusterExtensions.Build.cs index 22f9d9dcf3e85da6b4565f32f5543364fc735762..6b3217d6f6fc3cfb2d7e8b3ca0b81f3b493b7b78 100644 --- a/Source/nDisplayExtensions/nDisplayExtensions.Build.cs +++ b/Source/DisplayClusterExtensions/DisplayClusterExtensions.Build.cs @@ -1,8 +1,8 @@ using UnrealBuildTool; -public class nDisplayExtensions : ModuleRules +public class DisplayClusterExtensions : ModuleRules { - public nDisplayExtensions(ReadOnlyTargetRules Target) : base(Target) + public DisplayClusterExtensions(ReadOnlyTargetRules Target) : base(Target) { PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; @@ -28,6 +28,7 @@ public class nDisplayExtensions : ModuleRules "Core", "CoreUObject", "DisplayCluster", + "DisplayClusterInput", "Engine", "InputCore" } diff --git a/Source/DisplayClusterExtensions/Private/DisplayClusterExtensions.cpp b/Source/DisplayClusterExtensions/Private/DisplayClusterExtensions.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c715f682a56cb1a01f8c9230313022bb93567144 --- /dev/null +++ b/Source/DisplayClusterExtensions/Private/DisplayClusterExtensions.cpp @@ -0,0 +1,16 @@ +#include "DisplayClusterExtensions.h" + +#define LOCTEXT_NAMESPACE "FnDisplayExtensionsModule" + +void FDisplayClusterExtensionsModule::StartupModule () +{ + +} +void FDisplayClusterExtensionsModule::ShutdownModule() +{ + +} + +#undef LOCTEXT_NAMESPACE + +IMPLEMENT_MODULE(FDisplayClusterExtensionsModule, DisplayClusterExtensions) \ No newline at end of file diff --git a/Source/nDisplayExtensions/Private/DisplayClusterGameModeCAVE.cpp b/Source/DisplayClusterExtensions/Private/DisplayClusterGameModeCAVE.cpp similarity index 100% rename from Source/nDisplayExtensions/Private/DisplayClusterGameModeCAVE.cpp rename to Source/DisplayClusterExtensions/Private/DisplayClusterGameModeCAVE.cpp diff --git a/Source/DisplayClusterExtensions/Private/DisplayClusterPawnCAVE.cpp b/Source/DisplayClusterExtensions/Private/DisplayClusterPawnCAVE.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5855da424d51b3c12c40d013042cb450eff123e0 --- /dev/null +++ b/Source/DisplayClusterExtensions/Private/DisplayClusterPawnCAVE.cpp @@ -0,0 +1,142 @@ +#include "DisplayClusterPawnCAVE.h" + +#include "Cluster/IDisplayClusterClusterManager.h" +#include "Engine/World.h" +#include "Game/IDisplayClusterGameManager.h" +#include "GameFramework/WorldSettings.h" +#include "Input/IDisplayClusterInputManager.h" +#include "Kismet/GameplayStatics.h" +#include "DisplayClusterSettings.h" +#include "IDisplayCluster.h" + +ADisplayClusterPawnCAVE::ADisplayClusterPawnCAVE(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) +{ + MovementComponent = CreateDefaultSubobject<UFloatingPawnMovement> (TEXT("MovementComponent0")); + MovementComponent->UpdatedComponent = RootComponent; + + RotatingComponent = CreateDefaultSubobject<URotatingMovementComponent>(TEXT("RotatingComponent0")); + RotatingComponent->UpdatedComponent = RootComponent; + RotatingComponent->bRotationInLocalSpace = false; + RotatingComponent->PivotTranslation = FVector::ZeroVector; + RotatingComponent->RotationRate = FRotator::ZeroRotator; +} + +void ADisplayClusterPawnCAVE::OnForward_Implementation (float Value) +{ + if (Flystick) + { + if (IDisplayCluster::Get().GetClusterMgr()->IsMaster()) + AddMovementInput(Flystick->GetForwardVector(), Value); + } + else + { + AddMovementInput((TranslationDirection ? TranslationDirection : RootComponent)->GetForwardVector(), Value); + } +} +void ADisplayClusterPawnCAVE::OnRight_Implementation (float Value) +{ + if (Flystick) + { + if (IDisplayCluster::Get().GetClusterMgr()->IsMaster()) + AddMovementInput(Flystick->GetRightVector(), Value); + } + else + { + AddMovementInput((TranslationDirection ? TranslationDirection : RootComponent)->GetRightVector(), Value); + } +} +void ADisplayClusterPawnCAVE::OnTurnRate_Implementation (float Rate ) +{ + if (Flystick) + { + if (!RotatingComponent->UpdatedComponent || !IDisplayCluster::Get().GetGameMgr() || !IDisplayCluster::Get().GetGameMgr()->GetActiveCamera()) return; + + const FVector CameraLocation = IDisplayCluster::Get().GetGameMgr()->GetActiveCamera()->GetComponentLocation(); + RotatingComponent->PivotTranslation = RotatingComponent->UpdatedComponent->GetComponentTransform().InverseTransformPositionNoScale(CameraLocation); + RotatingComponent->RotationRate = FRotator(RotatingComponent->RotationRate.Pitch, Rate * BaseTurnRate, 0.0f); + } + else + { + AddControllerYawInput(BaseTurnRate * Rate * GetWorld()->GetDeltaSeconds() * CustomTimeDilation); + } +} +void ADisplayClusterPawnCAVE::OnLookUpRate_Implementation(float Rate ) +{ + if (Flystick) + { + // User-centered projection causes motion sickness on look up interaction hence not implemented. + } + else + { + AddControllerPitchInput(BaseTurnRate * Rate * GetWorld()->GetDeltaSeconds() * CustomTimeDilation); + } +} +void ADisplayClusterPawnCAVE::OnFire_Implementation () +{ + +} +void ADisplayClusterPawnCAVE::OnAction_Implementation (int32 Index) +{ + +} + +void ADisplayClusterPawnCAVE::BeginPlay () +{ + Super::BeginPlay(); + + if (!IDisplayCluster::Get().IsModuleInitialized() || !IDisplayCluster::Get().IsAvailable()) return; + + auto IsCluster = (IDisplayCluster::Get().GetOperationMode() == EDisplayClusterOperationMode::Cluster); + bUseControllerRotationYaw = !IsCluster; + bUseControllerRotationPitch = !IsCluster; + bUseControllerRotationRoll = !IsCluster; + + TArray<AActor*> SettingsActors; + UGameplayStatics::GetAllActorsOfClass(GetWorld(), ADisplayClusterSettings::StaticClass(), SettingsActors); + if (SettingsActors.Num() == 0) return; + + ADisplayClusterSettings* Settings = Cast<ADisplayClusterSettings>(SettingsActors[0]); + MovementComponent->MaxSpeed = Settings->MovementMaxSpeed ; + MovementComponent->Acceleration = Settings->MovementAcceleration; + MovementComponent->Deceleration = Settings->MovementDeceleration; + MovementComponent->TurningBoost = Settings->MovementTurningBoost; + BaseTurnRate = Settings->RotationSpeed ; +} +void ADisplayClusterPawnCAVE::Tick (float DeltaSeconds) +{ + Super::Tick(DeltaSeconds); + + // Is this really necessary? + const float Mult = GetWorld()->GetWorldSettings()->WorldToMeters / 100.f; + SetActorScale3D(FVector(Mult, Mult, Mult)); + + if (!Flystick) + Flystick = IDisplayCluster::Get().GetGameMgr()->GetNodeById(TEXT("flystick")); // There MUST be an scene node called flystick in the config. +} +void ADisplayClusterPawnCAVE::BeginDestroy () +{ + Super::BeginDestroy(); +} + +void ADisplayClusterPawnCAVE::SetupPlayerInputComponent (UInputComponent* PlayerInputComponent) +{ + check(PlayerInputComponent); + Super::SetupPlayerInputComponent(PlayerInputComponent); + if (PlayerInputComponent) + { + PlayerInputComponent->BindAxis ("MoveForward" , this, &ADisplayClusterPawnCAVE::OnForward ); + PlayerInputComponent->BindAxis ("MoveRight" , this, &ADisplayClusterPawnCAVE::OnRight ); + PlayerInputComponent->BindAxis ("TurnRate" , this, &ADisplayClusterPawnCAVE::OnTurnRate ); + PlayerInputComponent->BindAxis ("LookUpRate" , this, &ADisplayClusterPawnCAVE::OnLookUpRate); + PlayerInputComponent->BindAction ("Fire" , IE_Pressed , this, &ADisplayClusterPawnCAVE::OnFire ); + PlayerInputComponent->BindAction<FButtonDelegate>("Action1" , IE_Pressed , this, &ADisplayClusterPawnCAVE::OnAction , 1); + PlayerInputComponent->BindAction<FButtonDelegate>("Action2" , IE_Pressed , this, &ADisplayClusterPawnCAVE::OnAction , 2); + PlayerInputComponent->BindAction<FButtonDelegate>("Action3" , IE_Pressed , this, &ADisplayClusterPawnCAVE::OnAction , 3); + PlayerInputComponent->BindAction<FButtonDelegate>("Action4" , IE_Pressed , this, &ADisplayClusterPawnCAVE::OnAction , 4); + PlayerInputComponent->BindAction<FButtonDelegate>("Action5" , IE_Pressed , this, &ADisplayClusterPawnCAVE::OnAction , 5); + } +} +UPawnMovementComponent* ADisplayClusterPawnCAVE::GetMovementComponent () const +{ + return MovementComponent; +} diff --git a/Source/nDisplayExtensions/Public/nDisplayExtensions.h b/Source/DisplayClusterExtensions/Public/DisplayClusterExtensions.h similarity index 67% rename from Source/nDisplayExtensions/Public/nDisplayExtensions.h rename to Source/DisplayClusterExtensions/Public/DisplayClusterExtensions.h index 275de5791b5de51cbd5d31f76abeb60f0e953b2a..37d22333b3a096af9f8dd93956bd0e51de38f3c5 100644 --- a/Source/nDisplayExtensions/Public/nDisplayExtensions.h +++ b/Source/DisplayClusterExtensions/Public/DisplayClusterExtensions.h @@ -3,7 +3,7 @@ #include "CoreMinimal.h" #include "Modules/ModuleManager.h" -class NDISPLAYEXTENSIONS_API FnDisplayExtensionsModule : public IModuleInterface +class FDisplayClusterExtensionsModule : public IModuleInterface { public: virtual void StartupModule () override; diff --git a/Source/nDisplayExtensions/Public/DisplayClusterGameModeCAVE.h b/Source/DisplayClusterExtensions/Public/DisplayClusterGameModeCAVE.h similarity index 67% rename from Source/nDisplayExtensions/Public/DisplayClusterGameModeCAVE.h rename to Source/DisplayClusterExtensions/Public/DisplayClusterGameModeCAVE.h index 34d1ed7fbd5eeb78a93e41f2ac7418e51cd7064a..395eba444e2f43b96535d93805cad88ee2e413f3 100644 --- a/Source/nDisplayExtensions/Public/DisplayClusterGameModeCAVE.h +++ b/Source/DisplayClusterExtensions/Public/DisplayClusterGameModeCAVE.h @@ -6,7 +6,7 @@ #include "DisplayClusterGameModeCAVE.generated.h" UCLASS() -class NDISPLAYEXTENSIONS_API ADisplayClusterGameModeCAVE : public ADisplayClusterGameMode +class DISPLAYCLUSTEREXTENSIONS_API ADisplayClusterGameModeCAVE : public ADisplayClusterGameMode { GENERATED_BODY() diff --git a/Source/DisplayClusterExtensions/Public/DisplayClusterPawnCAVE.h b/Source/DisplayClusterExtensions/Public/DisplayClusterPawnCAVE.h new file mode 100644 index 0000000000000000000000000000000000000000..09ec2f3f376c95ffce7750f5f76c3044bb765852 --- /dev/null +++ b/Source/DisplayClusterExtensions/Public/DisplayClusterPawnCAVE.h @@ -0,0 +1,39 @@ +#pragma once + +#include "GameFramework/FloatingPawnMovement.h" +#include "GameFramework/PawnMovementComponent.h" +#include "GameFramework/RotatingMovementComponent.h" +#include "CoreMinimal.h" +#include "DisplayClusterPawn.h" +#include "DisplayClusterSceneComponent.h" + +#include "DisplayClusterPawnCAVE.generated.h" + +UCLASS() +class DISPLAYCLUSTEREXTENSIONS_API ADisplayClusterPawnCAVE : public ADisplayClusterPawn +{ + GENERATED_UCLASS_BODY() + +public: + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Pawn") void OnForward (float Value); + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Pawn") void OnRight (float Value); + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Pawn") void OnTurnRate (float Rate ); + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Pawn") void OnLookUpRate(float Rate ); + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Pawn") void OnFire (); + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Pawn") void OnAction (int32 Index); + + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Pawn") float BaseTurnRate = 45.0f ; + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Pawn") UDisplayClusterSceneComponent* Flystick = nullptr; + +protected: + DECLARE_DELEGATE_OneParam(FButtonDelegate, int32); + + virtual void BeginPlay () override; + virtual void Tick (float DeltaSeconds ) override; + virtual void BeginDestroy () override; + virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override; + virtual UPawnMovementComponent* GetMovementComponent () const override; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Pawn", meta = (AllowPrivateAccess = "true")) UFloatingPawnMovement* MovementComponent = nullptr; + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Pawn", meta = (AllowPrivateAccess = "true")) URotatingMovementComponent* RotatingComponent = nullptr; +}; diff --git a/Source/nDisplayExtensions/Private/DisplayClusterPawnBase.cpp b/Source/nDisplayExtensions/Private/DisplayClusterPawnBase.cpp deleted file mode 100644 index 9411bc4ca3488a86177f330c661e20617ccb5b66..0000000000000000000000000000000000000000 --- a/Source/nDisplayExtensions/Private/DisplayClusterPawnBase.cpp +++ /dev/null @@ -1,157 +0,0 @@ -#include "DisplayClusterPawnBase.h" - -#include "Engine/World.h" -#include "Game/IDisplayClusterGameManager.h" -#include "GameFramework/WorldSettings.h" -#include "DisplayClusterSceneComponentSyncParent.h" -#include "DisplayClusterSettings.h" -#include "DisplayClusterGameMode.h" -#include "IDisplayCluster.h" -#include "Kismet/GameplayStatics.h" - -ADisplayClusterPawnBase::ADisplayClusterPawnBase(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) -{ - MovementComponent = CreateDefaultSubobject<UFloatingPawnMovement> (TEXT("MovementComponent0")); - MovementComponent->UpdatedComponent = RootComponent; - - RotatingComponent = CreateDefaultSubobject<URotatingMovementComponent>(TEXT("RotatingComponent0")); - RotatingComponent->UpdatedComponent = RootComponent; - RotatingComponent->bRotationInLocalSpace = true; - RotatingComponent->PivotTranslation = FVector::ZeroVector; - RotatingComponent->RotationRate = FRotator::ZeroRotator; - - RotatingComponent2 = CreateDefaultSubobject<URotatingMovementComponent>(TEXT("RotatingComponent1")); - RotatingComponent2->UpdatedComponent = RootComponent; - RotatingComponent2->bRotationInLocalSpace = false; - RotatingComponent2->PivotTranslation = FVector::ZeroVector; - RotatingComponent2->RotationRate = FRotator::ZeroRotator; - - BaseTurnRate = 45.f; - BaseLookUpRate = 45.f; -} - -void ADisplayClusterPawnBase::MoveForward (float Value) -{ - if (Value == 0.f) return; - AddMovementInput((TranslationDirection ? TranslationDirection : RootComponent)->GetForwardVector(), Value); -} -void ADisplayClusterPawnBase::MoveRight (float Value) -{ - if (Value == 0.f) return; - AddMovementInput((TranslationDirection ? TranslationDirection : RootComponent)->GetRightVector (), Value); -} -void ADisplayClusterPawnBase::MoveUp (float Value) -{ - if (Value == 0.f) return; - AddMovementInput((TranslationDirection ? TranslationDirection : RootComponent)->GetUpVector (), Value); -} -void ADisplayClusterPawnBase::TurnAtRate (float Rate ) -{ - if (IDisplayCluster::Get().GetOperationMode() == EDisplayClusterOperationMode::Cluster) - { - if (!RotatingComponent->UpdatedComponent) return; - auto Manager = IDisplayCluster::Get().GetGameMgr(); - if (!Manager) return; - auto Camera = Manager->GetActiveCamera(); - if (!Camera ) return; - - const FTransform TransformToRotate = RotatingComponent->UpdatedComponent->GetComponentTransform(); - const FVector RotateAroundPivot = TransformToRotate.InverseTransformPositionNoScale(Camera->GetComponentLocation()); - RotatingComponent->PivotTranslation = RotateAroundPivot; - RotatingComponent->RotationRate = FRotator(RotatingComponent->RotationRate.Pitch, Rate * BaseTurnRate, 0.f); - } - else if (Rate != 0.f) - AddControllerYawInput(BaseTurnRate * Rate * GetWorld()->GetDeltaSeconds() * CustomTimeDilation); -} -void ADisplayClusterPawnBase::TurnAtRate2 (float Rate ) -{ - if (IDisplayCluster::Get().GetOperationMode() == EDisplayClusterOperationMode::Cluster) - { - if (!RotatingComponent2->UpdatedComponent) return; - auto Manager = IDisplayCluster::Get().GetGameMgr(); - if (!Manager) return; - auto Camera = Manager->GetActiveCamera(); - if (!Camera ) return; - - const FTransform TransformToRotate = RotatingComponent2->UpdatedComponent->GetComponentTransform(); - const FVector RotateAroundPivot = TransformToRotate.InverseTransformPositionNoScale(Camera->GetComponentLocation()); - RotatingComponent2->PivotTranslation = RotateAroundPivot; - RotatingComponent2->RotationRate = FRotator(RotatingComponent2->RotationRate.Pitch, Rate * BaseTurnRate, 0.f); - } - else if (Rate != 0.f) - AddControllerYawInput(BaseTurnRate * Rate * GetWorld()->GetDeltaSeconds() * CustomTimeDilation); -} -void ADisplayClusterPawnBase::LookUpAtRate(float Rate ) -{ - if (IDisplayCluster::Get().GetOperationMode() == EDisplayClusterOperationMode::Cluster) - { - //@note: usually CAVE-like systems don't use roll and pitch rotation since it can cause dizziness. -#if 0 - //@todo: rotate around active camera - auto Manager = IDisplayCluster::Get().GetGameMgr(); - if (!Manager) return; - auto Camera = Manager->GetActiveCamera(); - if (!Camera ) return; - - RotatingComponent->bRotationInLocalSpace = true; - RotatingComponent->PivotTranslation = FVector::ZeroVector; - -#endif - } - else if (Rate != 0.f) - { - AddControllerPitchInput(BaseTurnRate * Rate * GetWorld()->GetDeltaSeconds() * CustomTimeDilation); - } -} - -void ADisplayClusterPawnBase::BeginPlay () -{ - Super::BeginPlay(); - - if (!IDisplayCluster::Get().IsModuleInitialized() || !IDisplayCluster::Get().IsAvailable()) return; - - auto IsCluster = (IDisplayCluster::Get().GetOperationMode() == EDisplayClusterOperationMode::Cluster); - bUseControllerRotationYaw = !IsCluster; - bUseControllerRotationPitch = !IsCluster; - bUseControllerRotationRoll = !IsCluster; - - TArray<AActor*> SettingsActors; - UGameplayStatics::GetAllActorsOfClass(GetWorld(), ADisplayClusterSettings::StaticClass(), SettingsActors); - if (SettingsActors.Num() == 0) return; - - ADisplayClusterSettings* Settings = Cast<ADisplayClusterSettings>(SettingsActors[0]); - MovementComponent->MaxSpeed = Settings->MovementMaxSpeed; - MovementComponent->Acceleration = Settings->MovementAcceleration; - MovementComponent->Deceleration = Settings->MovementDeceleration; - MovementComponent->TurningBoost = Settings->MovementTurningBoost; - BaseTurnRate = Settings->RotationSpeed; - BaseLookUpRate = Settings->RotationSpeed; -} -void ADisplayClusterPawnBase::Tick (float DeltaSeconds) -{ - Super::Tick(DeltaSeconds); - const float Mult = GetWorld()->GetWorldSettings()->WorldToMeters / 100.f; - SetActorScale3D(FVector(Mult, Mult, Mult)); -} -void ADisplayClusterPawnBase::BeginDestroy() -{ - Super::BeginDestroy(); -} -UPawnMovementComponent* ADisplayClusterPawnBase::GetMovementComponent() const -{ - return MovementComponent; -} - -void ADisplayClusterPawnBase::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) -{ - check(PlayerInputComponent); - Super::SetupPlayerInputComponent(PlayerInputComponent); - if (PlayerInputComponent) - { - PlayerInputComponent->BindAxis("MoveForward", this, &ADisplayClusterPawnBase::MoveForward ); - PlayerInputComponent->BindAxis("MoveRight" , this, &ADisplayClusterPawnBase::MoveRight ); - PlayerInputComponent->BindAxis("MoveUp" , this, &ADisplayClusterPawnBase::MoveUp ); - PlayerInputComponent->BindAxis("TurnRate" , this, &ADisplayClusterPawnBase::TurnAtRate2 ); - PlayerInputComponent->BindAxis("LookUpRate" , this, &ADisplayClusterPawnBase::LookUpAtRate); - } -} diff --git a/Source/nDisplayExtensions/Private/DisplayClusterPawnCAVE.cpp b/Source/nDisplayExtensions/Private/DisplayClusterPawnCAVE.cpp deleted file mode 100644 index 3a4cccd86a4a25cfbd572474457744cc8d09b406..0000000000000000000000000000000000000000 --- a/Source/nDisplayExtensions/Private/DisplayClusterPawnCAVE.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include "DisplayClusterPawnCAVE.h" - -#include "Cluster/IDisplayClusterClusterManager.h" -#include "Game/IDisplayClusterGameManager.h" -#include "Input/IDisplayClusterInputManager.h" -#include "IDisplayCluster.h" - -void ADisplayClusterPawnCAVE::OnAxisEvent_Implementation (FVector2D Value ) -{ - if (!IDisplayCluster::Get().GetClusterMgr()->IsMaster()) return; - AddMovementInput(Flystick->GetRightVector (), Value[0]); - AddMovementInput(Flystick->GetForwardVector(), Value[1]); -} -void ADisplayClusterPawnCAVE::OnTriggerEvent_Implementation(bool Pressed ) -{ - -} -void ADisplayClusterPawnCAVE::OnButtonEvent_Implementation (bool Pressed , int32 Index) -{ - -} - -void ADisplayClusterPawnCAVE::BeginPlay () -{ - Super::BeginPlay(); -} -void ADisplayClusterPawnCAVE::Tick (float DeltaSeconds) -{ - // Due to these declarations, this class is bound to aixcave.cfg. - static const auto flystick_name = FString(TEXT("flystick" )); - static const auto axis_name = FString(TEXT("dtrack_axis" )); - static const auto buttons_name = FString(TEXT("dtrack_buttons")); - - Super::Tick(DeltaSeconds); - - if (!Flystick) Flystick = IDisplayCluster::Get().GetGameMgr()->GetNodeById(flystick_name); - if (!Flystick) return; - - FVector2D Axes; - IDisplayCluster::Get().GetInputMgr()->GetAxis(axis_name, 0, Axes[0]); - IDisplayCluster::Get().GetInputMgr()->GetAxis(axis_name, 1, Axes[1]); - if (Axes[0] != 0.0f || Axes[1] != 0.0f) OnAxisEvent_Implementation(Axes); - - bool TriggerPressed = false, TriggerReleased = false; - IDisplayCluster::Get().GetInputMgr()->WasButtonPressed (buttons_name, 0, TriggerPressed ); - IDisplayCluster::Get().GetInputMgr()->WasButtonReleased(buttons_name, 0, TriggerReleased); - if (TriggerPressed ) OnTriggerEvent_Implementation(true ); - if (TriggerReleased) OnTriggerEvent_Implementation(false); - - for (auto i = 1; i < 6; ++i) - { - bool ButtonPressed = false, ButtonReleased = false; - IDisplayCluster::Get().GetInputMgr()->WasButtonPressed (buttons_name, i, ButtonPressed ); - IDisplayCluster::Get().GetInputMgr()->WasButtonReleased(buttons_name, i, ButtonReleased); - if (ButtonPressed ) OnButtonEvent_Implementation(true , i); - if (ButtonReleased) OnButtonEvent_Implementation(false, i); - } -} -void ADisplayClusterPawnCAVE::BeginDestroy () -{ - Super::BeginDestroy(); -} \ No newline at end of file diff --git a/Source/nDisplayExtensions/Private/nDisplayExtensions.cpp b/Source/nDisplayExtensions/Private/nDisplayExtensions.cpp deleted file mode 100644 index aa70c4ae1fbf68dbd65102a8437bb21bd3557df6..0000000000000000000000000000000000000000 --- a/Source/nDisplayExtensions/Private/nDisplayExtensions.cpp +++ /dev/null @@ -1,16 +0,0 @@ -#include "nDisplayExtensions.h" - -#define LOCTEXT_NAMESPACE "FnDisplayExtensionsModule" - -void FnDisplayExtensionsModule::StartupModule () -{ - -} -void FnDisplayExtensionsModule::ShutdownModule() -{ - -} - -#undef LOCTEXT_NAMESPACE - -IMPLEMENT_MODULE(FnDisplayExtensionsModule, nDisplayExtensions) \ No newline at end of file diff --git a/Source/nDisplayExtensions/Public/DisplayClusterPawnBase.h b/Source/nDisplayExtensions/Public/DisplayClusterPawnBase.h deleted file mode 100644 index 68fc6820092d956e1a2699cee56d8225d2ecc305..0000000000000000000000000000000000000000 --- a/Source/nDisplayExtensions/Public/DisplayClusterPawnBase.h +++ /dev/null @@ -1,39 +0,0 @@ -#pragma once - -#include "Components/InputComponent.h" -#include "GameFramework/FloatingPawnMovement.h" -#include "GameFramework/PawnMovementComponent.h" -#include "GameFramework/RotatingMovementComponent.h" -#include "CoreMinimal.h" -#include "DisplayClusterPawn.h" - -#include "DisplayClusterPawnBase.generated.h" - -UCLASS() -class NDISPLAYEXTENSIONS_API ADisplayClusterPawnBase : public ADisplayClusterPawn -{ - GENERATED_UCLASS_BODY() - -public: - UFUNCTION(BlueprintCallable, Category = "Pawn") virtual void MoveForward (float Value); - UFUNCTION(BlueprintCallable, Category = "Pawn") virtual void MoveRight (float Value); - UFUNCTION(BlueprintCallable, Category = "Pawn") virtual void MoveUp (float Value); - UFUNCTION(BlueprintCallable, Category = "Pawn") virtual void TurnAtRate (float Rate ); - UFUNCTION(BlueprintCallable, Category = "Pawn") virtual void TurnAtRate2 (float Rate ); - UFUNCTION(BlueprintCallable, Category = "Pawn") virtual void LookUpAtRate(float Rate ); - - virtual void BeginPlay () override; - virtual void Tick (float DeltaSeconds) override; - virtual void BeginDestroy () override; - virtual UPawnMovementComponent* GetMovementComponent() const override; - - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Pawn") float BaseTurnRate ; - UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Pawn") float BaseLookUpRate; - -protected: - virtual void SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) override; - - UPROPERTY(Category = Pawn, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) UFloatingPawnMovement* MovementComponent ; - UPROPERTY(Category = Pawn, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) URotatingMovementComponent* RotatingComponent ; - UPROPERTY(Category = Pawn, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) URotatingMovementComponent* RotatingComponent2; -}; \ No newline at end of file diff --git a/Source/nDisplayExtensions/Public/DisplayClusterPawnCAVE.h b/Source/nDisplayExtensions/Public/DisplayClusterPawnCAVE.h deleted file mode 100644 index fbb47da0f1a8dd850370a4fc6e69aed106cdfdc1..0000000000000000000000000000000000000000 --- a/Source/nDisplayExtensions/Public/DisplayClusterPawnCAVE.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once - -#include "CoreMinimal.h" -#include "DisplayClusterPawnBase.h" -#include "DisplayClusterSceneComponent.h" - -#include "DisplayClusterPawnCAVE.generated.h" - -UCLASS() -class NDISPLAYEXTENSIONS_API ADisplayClusterPawnCAVE : public ADisplayClusterPawnBase -{ - GENERATED_BODY() - -public: - UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Input") void OnAxisEvent (FVector2D Value ); - UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Input") void OnButtonEvent (bool Pressed, int32 Index); - UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Input") void OnTriggerEvent(bool Pressed); - -protected: - virtual void BeginPlay () override; - virtual void Tick (float DeltaSeconds) override; - virtual void BeginDestroy() override; - - UDisplayClusterSceneComponent* Flystick = nullptr; -}; diff --git a/nDisplayExtensions.uplugin b/nDisplayExtensions.uplugin index 31dbd3836665bce4091212b10f9e0d711e258bc8..b7529ae0b42fa4bfd40e543d3c9f90d879645a8f 100644 --- a/nDisplayExtensions.uplugin +++ b/nDisplayExtensions.uplugin @@ -13,9 +13,10 @@ "CanContainContent": true, "IsBetaVersion": false, "Installed": false, + "EnabledByDefault": true, "Modules": [ { - "Name": "nDisplayExtensions", + "Name": "DisplayClusterExtensions", "Type": "Developer", "LoadingPhase": "Default" } @@ -24,6 +25,10 @@ { "Name": "nDisplay", "Enabled": true + }, + { + "Name": "nDisplayInput", + "Enabled": true } ] } \ No newline at end of file