// © 2025 Naked People Team. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "GameFramework/Actor.h" #include "LocationTrigger.generated.h" class ULocationData; class UBoxComponent; UCLASS() class NAKEDDESIRE_API ALocationTrigger : public AActor { GENERATED_BODY() UPROPERTY(BlueprintReadOnly, meta = (AllowPrivateAccess)) UBoxComponent* BoxTrigger; UPROPERTY(EditAnywhere) ULocationData* LocationData; // When set, the player crossing this trigger drives session start / end on // USessionManagerSubsystem (GDD §4.1 / §4.3). Exactly one trigger — the // apartment — should have this checked. UPROPERTY(EditAnywhere, Category = "Session") bool bIsApartment = false; public: ALocationTrigger(); ULocationData* GetLocationData() const; protected: virtual void BeginPlay() override; private: UFUNCTION() void OnTriggerBeginOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex, bool bFromSweep, const FHitResult& SweepResult); UFUNCTION() void OnTriggerEndOverlap(UPrimitiveComponent* OverlappedComponent, AActor* OtherActor, UPrimitiveComponent* OtherComp, int32 OtherBodyIndex); };