Files
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

76 lines
2.7 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "ZoneGraphTypes.h"
#include "MassSettings.h"
#include "MassSmartObjectSettings.generated.h"
#define UE_API MASSSMARTOBJECTS_API
#if WITH_EDITOR
/** Called when annotation tag settings changed. */
DECLARE_MULTICAST_DELEGATE(FOnAnnotationSettingsChanged);
#endif
/**
* Settings for the MassSmartObject module.
*/
UCLASS(MinimalAPI, config = Plugins, defaultconfig, DisplayName = "Mass SmartObject")
class UMassSmartObjectSettings : public UMassModuleSettings
{
GENERATED_BODY()
public:
#if WITH_EDITOR
mutable FOnAnnotationSettingsChanged OnAnnotationSettingsChanged;
#endif
/** Tag used to indicate that smart objects are associated to a lane for queries using lanes. */
UPROPERTY(EditDefaultsOnly, Category = ZoneGraph, config)
FZoneGraphTag SmartObjectTag;
/** Extents used to find precomputed entry points to reach a smart object from a zone graph lane. */
UPROPERTY(EditDefaultsOnly, Category = ZoneGraph, config)
float SearchExtents = 500.f;
/**
* Can be used to prevent smart object users from reusing the same smart object slots more than once.
* The list of most recently used slots can contain up to 4 slots, then a newly used slot will
* replace the least recently used one.
* It is also possible to use a cooldown to allow slots to be considered again after a given
* period of time.
* @see bUseCooldownForMRUSlots
* @see MRUSlotsCooldown
*/
//~ Max values must stay in sync with FMRUSlots::MaxSlots
UPROPERTY(EditDefaultsOnly, Category = SmartObject, config, meta = (UIMin = "0", ClampMin = "0", UIMax = "4", ClampMax = "4", DisplayName = ""))
int32 MRUSlotsMaxCount = 0;
/**
* Set this flag to allow the most recently used slots to be considered again after the period of time specified by MRUSlotsCooldown
* This option requires MRUSlotsMaxCount to be a non-zero value
* @see MRUSlotsCooldown
* @see MRUSlotsMaxCount
*/
UPROPERTY(config, EditAnywhere, Category = SmartObject, meta = (EditCondition = "MRUSlotsMaxCount > 0", EditConditionHides))
bool bUseCooldownForMRUSlots = false;
/**
* Period of time during which a given slot will not be considered after being used
* This option requires 'bUseCooldownForMRUSlots' to be true and 'MRUSlotsMaxCount' to be a non-zero value
* @see bUseCooldownForMRUSlots
* @see MRUSlotsMaxCount
*/
UPROPERTY(EditDefaultsOnly, Category = SmartObject, config, meta = (UIMin = "0", ClampMin = "0", EditCondition = "MRUSlotsMaxCount > 0 && bUseCooldownForMRUSlots", EditConditionHides))
float MRUSlotsCooldown = 0.f;
protected:
#if WITH_EDITOR
UE_API virtual void PostEditChangeChainProperty(FPropertyChangedChainEvent& PropertyChangedEvent) override;
#endif
};
#undef UE_API