Files
UnrealEngine/Engine/Source/Runtime/AugmentedReality/Private/AROriginActor.cpp
2025-05-18 13:04:45 +08:00

52 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "AROriginActor.h"
#include "EngineUtils.h"
#include "Engine/Engine.h"
#include UE_INLINE_GENERATED_CPP_BY_NAME(AROriginActor)
AAROriginActor::AAROriginActor(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
PrimaryActorTick.bCanEverTick = false;
bAllowTickBeforeBeginPlay = false;
bReplicates = false;
SetReplicatingMovement(false);
SetCanBeDamaged(false);
}
AAROriginActor* AAROriginActor::GetOriginActor()
{
// Have to find the game world, not the editor world, if we are in vr preview
UWorld* GameWorld = nullptr;
for (const FWorldContext& Context : GEngine->GetWorldContexts())
{
if (Context.WorldType == EWorldType::Game || Context.WorldType == EWorldType::PIE)
{
GameWorld = Context.World();
}
}
if (GameWorld != nullptr)
{
AAROriginActor* FoundActor = nullptr;
for (TActorIterator<AAROriginActor> Iter(GameWorld); Iter; ++Iter)
{
if (IsValid(*Iter))
{
FoundActor = *Iter;
break;
}
}
if (FoundActor == nullptr)
{
// None spawned yet
FoundActor = GameWorld->SpawnActor<AAROriginActor>(AAROriginActor::StaticClass(), FVector::ZeroVector, FRotator::ZeroRotator);
}
return FoundActor;
}
return nullptr;
}