Files
Naked-Desire/Source/NakedDesire/Locations/LocationTrigger.cpp
T
2026-06-03 15:16:58 +03:00

59 lines
1.6 KiB
C++

// © 2025 Naked People Team. All Rights Reserved.
#include "LocationTrigger.h"
#include "Components/BoxComponent.h"
#include "NakedDesire/Global/SessionManagerSubsystem.h"
#include "NakedDesire/Player/NakedDesireCharacter.h"
ALocationTrigger::ALocationTrigger()
{
PrimaryActorTick.bCanEverTick = false;
BoxTrigger = CreateDefaultSubobject<UBoxComponent>("Box Trigger");
RootComponent = BoxTrigger;
}
ULocationData* ALocationTrigger::GetLocationData() const
{
return LocationData;
}
void ALocationTrigger::BeginPlay()
{
Super::BeginPlay();
if (bIsApartment)
{
BoxTrigger->OnComponentBeginOverlap.AddDynamic(this, &ALocationTrigger::OnTriggerBeginOverlap);
BoxTrigger->OnComponentEndOverlap.AddDynamic(this, &ALocationTrigger::OnTriggerEndOverlap);
}
}
void ALocationTrigger::OnTriggerBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor,
UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult)
{
if (!OtherActor || !OtherActor->IsA<ANakedDesireCharacter>())
return;
if (USessionManagerSubsystem* SessionManager = GetWorld()->GetSubsystem<USessionManagerSubsystem>())
{
SessionManager->NotifyEnteredApartment();
}
}
void ALocationTrigger::OnTriggerEndOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor,
UPrimitiveComponent* OtherComp, int32 OtherBodyIndex)
{
if (!OtherActor || !OtherActor->IsA<ANakedDesireCharacter>())
return;
if (USessionManagerSubsystem* SessionManager = GetWorld()->GetSubsystem<USessionManagerSubsystem>())
{
SessionManager->NotifyLeftApartment();
}
}