ProjectM/Source/ProjectT/Data/Npc/NpcDataModel.h

154 lines
3.4 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "UObject/Object.h"
#include "NpcDataModel.generated.h"
USTRUCT(Blueprintable)
struct FCrowdSettingsInfo
{
GENERATED_BODY()
FCrowdSettingsInfo() :
bUseCrowdSeparation(true),
SeparationWeight(10.f),
AvoidanceRangeMultiplier(1.f)
{}
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "CrowdSettings")
uint8 bUseCrowdSeparation : 1;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "CrowdSettings", meta = (EditCondition = "bUseCrowdSeparation"), meta = (Tooltip = "NPC 간 거리 유지 강도"))
float SeparationWeight;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "CrowdSettings", meta = (EditCondition = "bUseCrowdSeparation"), meta = (Tooltip = "회피 반응 배율"))
float AvoidanceRangeMultiplier;
};
UENUM(BlueprintType)
enum class EHeadRotationType : uint8
{
None = 0 UMETA(DisplayName = "None"),
Search UMETA(DisplayName = "Search"),
Guard UMETA(DisplayName = "Guard"),
LoopSearch UMETA(DisplayName = "LoopSearch"),
Pause UMETA(DisplayName = "Pause"),
TurnToTarget UMETA(DisplayName = "TurnToTarget")
};
UENUM(BlueprintType)
enum class ENpcState : uint8
{
Default = 0 UMETA(DisplayName = "Default"),
Returning UMETA(DisplayName = "Returning"),
Doubt UMETA(DisplayName = "Doubt"),
Chase UMETA(DisplayName = "Chase"),
Attack UMETA(DisplayName = "Attack"),
Guard UMETA(DisplayName = "Guard"),
Hit UMETA(DisplayName = "Hit"),
Dead UMETA(DisplayName = "Dead"),
};
UENUM(BlueprintType)
enum class ENpcSpeedType : uint8
{
Walk = 0 UMETA(DisplayName = "Walk"),
Run UMETA(DisplayName = "Run"),
Stop UMETA(DisplayName = "Stop"),
};
UENUM(BlueprintType)
enum class EPatrolType : uint8
{
None = 0 UMETA(DisplayName = "None"),
Patrol UMETA(DisplayName = "Patrol"),
Search UMETA(DisplayName = "Search"),
SearchPatrol UMETA(DisplayName = "SearchPatrol"),
};
UENUM(BlueprintType)
enum class EDoubtState : uint8
{
None = 0 UMETA(DisplayName = "None"),
Increasing UMETA(DisplayName = "Increasing"),
Decreasing UMETA(DisplayName = "Decreasing"),
};
UENUM(BlueprintType)
enum class EVisionMode : uint8
{
None = 0 UMETA(DisplayName = "None"),
Cone UMETA(DisplayName = "Cone"),
Line UMETA(DisplayName = "Line"),
};
UENUM(BlueprintType)
enum class ENpcNormalAnimState : uint8
{
None = 0 UMETA(DisplayName = "None"),
Idle UMETA(DisplayName = "Idle"),
Walk UMETA(DisplayName = "Walk"),
Run UMETA(DisplayName = "Run"),
};
UENUM(BlueprintType)
enum class ENpcAbnormalAnimState : uint8
{
None = 0 UMETA(DisplayName = "None"),
HitBack UMETA(DisplayName = "HitBack"),
JumpBack UMETA(DisplayName = "JumpBack"),
FallDown UMETA(DisplayName = "FallDown"),
GetUp UMETA(DisplayName = "GetUp"),
Stun UMETA(DisplayName = "Stun"),
DeadStart UMETA(DisplayName = "DeadStart"),
DeadLoop UMETA(DisplayName = "DeadLoop"),
};
USTRUCT(Blueprintable)
struct FNpcSimpleRatio
{
GENERATED_BODY()
FNpcSimpleRatio() :
CurrentValue(0.f),
MaxValue(0.f)
{
}
UPROPERTY(EditAnywhere)
float CurrentValue;
UPROPERTY(EditAnywhere)
float MaxValue;
};
USTRUCT(Blueprintable)
struct FNpcEffectValue
{
GENERATED_BODY()
FNpcEffectValue() :
RemainTime(0.f),
MaxTime(0.f),
EffectValue(0.f)
{
}
UPROPERTY(EditAnywhere)
float RemainTime;
UPROPERTY(EditAnywhere)
float MaxTime;
UPROPERTY(EditAnywhere)
float EffectValue;
};
UCLASS()
class PROJECTT_API UNpcDataModel : public UObject
{
GENERATED_BODY()
};