From c24fe9864a846139ca7a6632d2ce14044218a545 Mon Sep 17 00:00:00 2001 From: Kris Helwig <helwig@vr.rwth-aachen.de> Date: Wed, 2 Apr 2025 12:33:36 +0200 Subject: [PATCH] Implemented PointOfInterest as position markers, PointOfInterestManager as Manager, splines that connect POIs, and camera rides; --- Content/M_PointOfInterest.uasset | Bin 0 -> 13045 bytes Content/location_marker.uasset | Bin 0 -> 66243 bytes .../Private/PointOfInterest.cpp | 29 +++ .../Private/PointOfInterestManager.cpp | 194 ++++++++++++++++++ .../RWTHVRQuickStart/Public/PointOfInterest.h | 16 ++ .../Public/PointOfInterestManager.h | 61 ++++++ .../RWTHVRQuickStart.Build.cs | 4 +- 7 files changed, 302 insertions(+), 2 deletions(-) create mode 100644 Content/M_PointOfInterest.uasset create mode 100644 Content/location_marker.uasset create mode 100644 Source/RWTHVRQuickStart/Private/PointOfInterest.cpp create mode 100644 Source/RWTHVRQuickStart/Private/PointOfInterestManager.cpp create mode 100644 Source/RWTHVRQuickStart/Public/PointOfInterest.h create mode 100644 Source/RWTHVRQuickStart/Public/PointOfInterestManager.h diff --git a/Content/M_PointOfInterest.uasset b/Content/M_PointOfInterest.uasset new file mode 100644 index 0000000000000000000000000000000000000000..a8139e4ff912b49947eea83e25b273d05b8715fc GIT binary patch literal 13045 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 literal 0 HcmV?d00001 diff --git a/Content/location_marker.uasset b/Content/location_marker.uasset new file mode 100644 index 0000000000000000000000000000000000000000..9596735fa4f3699f4a0effa1340d9ad94508e6a9 GIT binary patch literal 66243 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 literal 0 HcmV?d00001 diff --git a/Source/RWTHVRQuickStart/Private/PointOfInterest.cpp b/Source/RWTHVRQuickStart/Private/PointOfInterest.cpp new file mode 100644 index 0000000..30b7635 --- /dev/null +++ b/Source/RWTHVRQuickStart/Private/PointOfInterest.cpp @@ -0,0 +1,29 @@ +#include "PointOfInterest.h" + +#include "Logging/StructuredLog.h" +#include "Components/BillboardComponent.h" + +DEFINE_LOG_CATEGORY(POILog) + +APointOfInterest::APointOfInterest() +{ + UE_LOGFMT(POILog, Verbose, "POI instantiated"); + + SetRootComponent(CreateDefaultSubobject<USceneComponent>("SceneComponent")); + + auto Billboard = CreateDefaultSubobject<UBillboardComponent>("BillboardComponent"); + + static ConstructorHelpers::FObjectFinder<UTexture2D> LocationMarker(TEXT("/Script/Engine.Texture2D'/RWTHVRQuickStart/location_marker.location_marker'")); + if(LocationMarker.Succeeded()) + { + Billboard->SetSprite(LocationMarker.Object); + } + else + { + UE_LOGFMT(POILog, Verbose, "POILog: Could not find location marker Texture. The Asset might have moved."); + } + Billboard->AttachToComponent(RootComponent, FAttachmentTransformRules::SnapToTargetIncludingScale); + Billboard->SetHiddenInGame(true); + Billboard->SetWorldScale3D(FVector(0.1f, 0.1f, 0.1f)); +} + diff --git a/Source/RWTHVRQuickStart/Private/PointOfInterestManager.cpp b/Source/RWTHVRQuickStart/Private/PointOfInterestManager.cpp new file mode 100644 index 0000000..e6a2ab1 --- /dev/null +++ b/Source/RWTHVRQuickStart/Private/PointOfInterestManager.cpp @@ -0,0 +1,194 @@ +#include "PointOfInterestManager.h" + +#include "PointOfInterest.h" +#include "Kismet/GameplayStatics.h" +#include "Logging/StructuredLog.h" + +DEFINE_LOG_CATEGORY(POIManagerLog); + +APointOfInterestManager::APointOfInterestManager() +{ + PrimaryActorTick.bCanEverTick = true; + PrimaryActorTick.bStartWithTickEnabled = true; + PrimaryActorTick.SetTickFunctionEnable(true); + + POIs = TArray<APointOfInterest*>(); + + SplineComponent = CreateDefaultSubobject<USplineComponent>("SplineComponent"); + SplineComponent->SetupAttachment(RootComponent.Get()); +} + +void APointOfInterestManager::TickActor(float DeltaTime, enum ELevelTick TickType, FActorTickFunction& ThisTickFunction) +{ + SplineComponent->Duration = SplineComponent->GetSplineLength() / CameraSpeed; + if (IsRidingCamera) + { + ProgressCameraRide(); + } +} + +void APointOfInterestManager::AddPointOfInterest() +{ + APointOfInterest* POI = static_cast<APointOfInterest*>(GetWorld()->SpawnActor(APointOfInterest::StaticClass())); + + TScriptDelegate Del = TScriptDelegate(); + Del.BindUFunction(this, "UpdateSpline"); + POI->GetRootComponent()->TransformUpdated.AddLambda([this](USceneComponent*, EUpdateTransformFlags, ETeleportType) + { + UpdateSpline(); + }); + + POIs.Add(POI); + + UpdateSpline(); +} + +void APointOfInterestManager::VisitNextPointOfInterest() +{ + if (CurrentPOIIndex >= GetPointOfInterestCount() - 1) + { + CurrentPOIIndex = 0; + } + else + { + ++CurrentPOIIndex; + } + VisitPointOfInterest(POIs[CurrentPOIIndex]); +} + +void APointOfInterestManager::VisitPreviousPointOfInterest() +{ + if (CurrentPOIIndex <= 0) + { + CurrentPOIIndex = GetPointOfInterestCount() - 1; + } + else + { + --CurrentPOIIndex; + } + VisitPointOfInterest(POIs[CurrentPOIIndex]); +} + +void APointOfInterestManager::VisitPointOfInterestByIndex(int index) +{ + VisitPointOfInterest(POIs[index]); +} + + +void APointOfInterestManager::VisitPointOfInterest(APointOfInterest* POI) const +{ + APawn* Pawn = UGameplayStatics::GetPlayerPawn(GetWorld(), 0); + if (!Pawn) + { + UE_LOGFMT(POIManagerLog, Warning, "Attempted to move player pawn but no pawn found to move."); + return; + } + FVector Location = POI->GetActorLocation(); + FRotator Rotation = POI->GetActorRotation(); + Rotation.Pitch = 0; + Rotation.Roll = 0; + + Pawn->Controller->SetControlRotation(Rotation); + Pawn->SetActorLocationAndRotation(Location, Rotation); +} + +int APointOfInterestManager::GetPointOfInterestCount() +{ + return POIs.Num(); +} + +void APointOfInterestManager::StartCameraRide() +{ + CameraRideStart = UGameplayStatics::GetTimeSeconds(this); + CameraRideEnd = CameraRideStart + SplineComponent->Duration; + + IsRidingCamera = true; +} + +void APointOfInterestManager::StopCameraRide() +{ + CameraRideEnded(); +} + + +void APointOfInterestManager::UpdateSpline() +{ + for (int i = 0; i < GetPointOfInterestCount(); ++i) + { + if (POIs[i] == nullptr) + { + POIs.RemoveAt(i); + SplineComponent->RemoveSplinePoint(i); + --i; + } + else if (!POIs[i]->GetRootComponent()->TransformUpdated.IsBound()) + { + POIs[i]->GetRootComponent()->TransformUpdated.AddLambda( + [this](USceneComponent*, EUpdateTransformFlags, ETeleportType) + { + UpdateSpline(); + }); + } + } + + int POIsNum = GetPointOfInterestCount(); + int SplinePointsNum = SplineComponent->GetNumberOfSplinePoints(); + + if (POIsNum > SplinePointsNum) + { + for (int i = SplinePointsNum; i < POIsNum; ++i) + { + SplineComponent->AddSplinePointAtIndex(FVector::Zero(), i, ESplineCoordinateSpace::World); + } + } + else if (POIsNum < SplinePointsNum) + { + for (int i = SplinePointsNum - 1; i >= POIsNum; --i) + { + SplineComponent->RemoveSplinePoint(i); + } + } + + for (int i = 0; i < GetPointOfInterestCount(); ++i) + { + APointOfInterest* POI = POIs[i]; + FVector POIPosition = POI->GetActorLocation(); + FRotator POIRotation = POI->GetActorRotation(); + SplineComponent->SetLocationAtSplinePoint(i, POIPosition, ESplineCoordinateSpace::World); + SplineComponent->SetRotationAtSplinePoint(i, POIRotation, ESplineCoordinateSpace::World); + } +} + +void APointOfInterestManager::ProgressCameraRide() +{ + double Current = UGameplayStatics::GetTimeSeconds(this); + float SecondsSinceStart = Current - CameraRideStart; + UE_LOGFMT(POIManagerLog, VeryVerbose, ""); + + APawn* Pawn = UGameplayStatics::GetPlayerPawn(GetWorld(), 0); + if (!Pawn) + { + UE_LOGFMT(POIManagerLog, Warning, "Attempted to move player pawn but no pawn found to move."); + return; + } + if (Current < CameraRideEnd) + { + FVector Location = SplineComponent->GetLocationAtTime(SecondsSinceStart, ESplineCoordinateSpace::World); + FRotator Rotation = SplineComponent->GetRotationAtTime(SecondsSinceStart, ESplineCoordinateSpace::World); + Rotation.Pitch = 0; + Rotation.Roll = 0; + + Pawn->Controller->SetControlRotation(Rotation); + Pawn->SetActorLocationAndRotation(Location, Rotation); + } + else + { + CameraRideEnded(); + } +} + +void APointOfInterestManager::CameraRideEnded() +{ + IsRidingCamera = false; + VisitPointOfInterestByIndex(GetPointOfInterestCount() - 1); +} diff --git a/Source/RWTHVRQuickStart/Public/PointOfInterest.h b/Source/RWTHVRQuickStart/Public/PointOfInterest.h new file mode 100644 index 0000000..71f2139 --- /dev/null +++ b/Source/RWTHVRQuickStart/Public/PointOfInterest.h @@ -0,0 +1,16 @@ +#pragma once + +#include "CoreMinimal.h" + +#include "PointOfInterest.generated.h" + +DECLARE_LOG_CATEGORY_EXTERN(POILog, All, All) + +UCLASS() +class APointOfInterest : public AActor +{ + GENERATED_BODY() + +public: + APointOfInterest(); +}; diff --git a/Source/RWTHVRQuickStart/Public/PointOfInterestManager.h b/Source/RWTHVRQuickStart/Public/PointOfInterestManager.h new file mode 100644 index 0000000..982f237 --- /dev/null +++ b/Source/RWTHVRQuickStart/Public/PointOfInterestManager.h @@ -0,0 +1,61 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Components/SplineComponent.h" + +#include "PointOfInterestManager.generated.h" + +DECLARE_LOG_CATEGORY_EXTERN(POIManagerLog, All, All); + +class APointOfInterest; +class FCameraRide; + +UCLASS(Blueprintable) +class APointOfInterestManager : public AActor +{ + GENERATED_BODY() + +public: + APointOfInterestManager(); + + virtual void TickActor(float DeltaTime, enum ELevelTick TickType, FActorTickFunction& ThisTickFunction) override; + + UFUNCTION(CallInEditor, Category="Point Of Interest Manager") + void AddPointOfInterest(); + + UFUNCTION(CallInEditor, Category="Point Of Interest Manager") + void VisitNextPointOfInterest(); + + UFUNCTION(CallInEditor, Category="Point Of Interest Manager") + void VisitPreviousPointOfInterest(); + + void VisitPointOfInterestByIndex(int index); + void VisitPointOfInterest(APointOfInterest* POI) const; + + UFUNCTION(CallInEditor, Category="Point Of Interest Manager") + void StartCameraRide(); + UFUNCTION(CallInEditor, Category="Point Of Interest Manager") + void StopCameraRide(); + + int GetPointOfInterestCount(); + +protected: + UPROPERTY(EditAnywhere) + TArray<APointOfInterest*> POIs; + + int CurrentPOIIndex = 0; + +private: + UFUNCTION(CallInEditor, Category="Point Of Interest Manager") + void UpdateSpline(); + + void ProgressCameraRide(); + void CameraRideEnded(); + + USplineComponent* SplineComponent; + + UPROPERTY(EditAnywhere, meta=(UIMin = 0.0, UIMax = 500)) + float CameraSpeed = 100; + bool IsRidingCamera; + float CameraRideStart, CameraRideEnd; +}; diff --git a/Source/RWTHVRQuickStart/RWTHVRQuickStart.Build.cs b/Source/RWTHVRQuickStart/RWTHVRQuickStart.Build.cs index 894b0c6..21f957f 100644 --- a/Source/RWTHVRQuickStart/RWTHVRQuickStart.Build.cs +++ b/Source/RWTHVRQuickStart/RWTHVRQuickStart.Build.cs @@ -25,7 +25,7 @@ public class RWTHVRQuickStart : ModuleRules PublicDependencyModuleNames.AddRange( new string[] { - "Core", + "Core", "Engine", "Engine", // ... add other public dependencies that you statically link with here ... } ); @@ -37,7 +37,7 @@ public class RWTHVRQuickStart : ModuleRules "CoreUObject", "Engine", "Slate", - "SlateCore", + "SlateCore", "RWTHVRToolkit", "RWTHVRToolkit", // ... add private dependencies that you statically link with here ... } ); -- GitLab