46 lines
1.2 KiB
C++
46 lines
1.2 KiB
C++
// © 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);
|
|
};
|