This repository has been archived on 2026-05-24. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
AgrarianGameArchive/Source/AgrarianGame/AgrarianMapBoundaryVolume.h
T
2026-05-16 12:36:58 -07:00

49 lines
1.5 KiB
C++

// Copyright Pacificao. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "AgrarianMapBoundaryVolume.generated.h"
class AAgrarianGameCharacter;
class UBoxComponent;
UCLASS(Blueprintable)
class AGRARIANGAME_API AAgrarianMapBoundaryVolume : public AActor
{
GENERATED_BODY()
public:
AAgrarianMapBoundaryVolume();
virtual void Tick(float DeltaSeconds) override;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Agrarian|Map Boundary")
TObjectPtr<UBoxComponent> BoundaryVolume;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Map Boundary")
FName BoundaryId = TEXT("ground_zero_mvp_tile");
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Map Boundary")
bool bClampPlayersAtBoundary = true;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Map Boundary", meta = (ClampMin = "0"))
float BoundaryPaddingCm = 250.0f;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Agrarian|Map Boundary", meta = (ClampMin = "0"))
float WarningDistanceCm = 3000.0f;
UFUNCTION(BlueprintCallable, Category = "Agrarian|Map Boundary")
bool IsLocationOutsideBoundary(const FVector& WorldLocation) const;
UFUNCTION(BlueprintCallable, Category = "Agrarian|Map Boundary")
bool IsLocationInsideWarningZone(const FVector& WorldLocation) const;
UFUNCTION(BlueprintCallable, Category = "Agrarian|Map Boundary")
FVector ClampLocationToBoundary(const FVector& WorldLocation) const;
protected:
void EnforceBoundaryForCharacter(AAgrarianGameCharacter* Character) const;
};