6#if UE_ENABLE_INCLUDE_ORDER_DEPRECATED_IN_5_6
23#define COMMAND_PUSHING_CHECK() \
24checkf(IsFlushing() == false, TEXT("Trying to push commands is not supported while the given buffer is being flushed")); \
25checkf(OwnerThreadId == FPlatformTLS::GetCurrentThreadId(), TEXT("Commands can be pushed only in the same thread where the command buffer was created."))
32 template <
typename TCommand>
35 using TResolved =
decltype(&TCommand::Execute);
37 return !std::is_same_v<TResolved, TBase>;
40 template <
typename TCommand>
41 requires std::is_base_of_v<FMassBatchedCommand, TCommand>
48#define ASSERT_EXECUTE_DEPRECATION(CommandType) \
49 static_assert(!UE::Mass::Deprecation::TOverridesExecute<CommandType>::value, "Mass Commands: CONST Execute function is deprecated in 5.7 and will be removed by 5.9. Use Run instead.");
54 template<
typename TCommand,
typename... Args>
56 requires(Args&&... args) {
61 template<
typename TCommand,
typename... Args>
64 { TCommand::CheckBreakpoints(Entity,
Forward<Args>(args)...) }
68 template<
typename TCommand,
typename...
TArgs>
71#if WITH_MASSENTITY_DEBUG
76 UE::Mass::Debug::FBreakpoint::DebugBreak();
82 template<
typename TCommand,
typename...
TArgs >
85#if WITH_MASSENTITY_DEBUG
88 if (TCommand::CheckBreakpointsByInstance(
Forward<TArgs>(InArgs)...))
90 UE::Mass::Debug::FBreakpoint::DebugBreak();
104 template<
template<
typename...
TArgs>
typename TCommand,
typename...
TArgs >
113 ++ActiveCommandsCounter;
116 template<
typename TCommand,
typename...
TArgs>
120 UE::Mass::Debug::CallCheckBreakpointsByInstance<TCommand>(
Forward<TArgs>(InArgs)...);
125 ++ActiveCommandsCounter;
129 template<
typename TCommand>
133 UE::Mass::Debug::CallCheckBreakpoints<TCommand>(Entity);
137 ++ActiveCommandsCounter;
140 template<
typename TCommand>
144 UE::Mass::Debug::CallCheckBreakpoints<TCommand>(Entities);
148 ++ActiveCommandsCounter;
168 ++ActiveCommandsCounter;
244 template<
typename TOld,
typename TNew>
252 template<
typename TOld,
typename TNew>
286 return ActiveCommandsCounter > 0;
320 T& CreateOrAddCommand()
325 const int32 Index = FMassBatchedCommand::GetCommandIndex<T>();
331 else if (CommandInstances[
Index])
333 return (T&)(*CommandInstances[
Index].Get());
337 return (T&)(*CommandInstances[
Index].Get());
362 int32 ActiveCommandsCounter = 0;
365 bool bIsFlushing =
false;
375#undef COMMAND_PUSHING_CHECK
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define LLM_SCOPE_BYNAME(...)
Definition LowLevelMemTracker.h:1098
#define UE_MT_SCOPED_WRITE_ACCESS(AccessDetector)
Definition MTAccessDetector.h:751
#define UE_MT_DECLARE_TS_RW_ACCESS_DETECTOR(AccessDetector)
Definition MTTransactionallySafeAccessDetector.h:285
#define COMMAND_PUSHING_CHECK()
Definition MassCommandBuffer.h:23
#define ASSERT_EXECUTE_DEPRECATION(CommandType)
Definition MassCommandBuffer.h:48
#define MASS_INVALID_FRAGMENT_MSG_F
Definition MassEntityElementTypes.h:17
#define MASS_INVALID_FRAGMENT_MSG
Definition MassEntityElementTypes.h:16
::FCriticalSection FTransactionallySafeCriticalSection
Definition TransactionallySafeCriticalSection.h:16
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
FRWLock Lock
Definition UnversionedPropertySerialization.cpp:921
UE_REWRITE SizeType Num() const
Definition Array.h:1144
UE_NODEBUG UE_FORCEINLINE_HINT SizeType Add(ElementType &&Item)
Definition Array.h:2696
UE_NODEBUG UE_FORCEINLINE_HINT bool IsValidIndex(SizeType Index) const
Definition Array.h:1122
SizeType AddZeroed()
Definition Array.h:2755
Definition UniquePtr.h:107
Definition ScopeLock.h:21
Definition ConvertibleTo.h:16
Definition MassEntityConcepts.h:16
Definition MassEntityConcepts.h:23
Definition MassCommandBuffer.h:62
Definition MassCommandBuffer.h:55
Definition MassCommandBuffer.h:52
void CallCheckBreakpointsByInstance(TArgs &&... InArgs)
Definition MassCommandBuffer.h:83
void CallCheckBreakpoints(TArgs &&... InArgs)
Definition MassCommandBuffer.h:69
Definition MassCommandBuffer.h:30
PRAGMA_DISABLE_DEPRECATION_WARNINGS constexpr bool IsExecuteOverridden()
Definition MassCommandBuffer.h:33
bool IsA< FMassTag >(const UStruct *Struct)
Definition MassEntityElementTypes.h:61
bool IsA< FMassFragment >(const UStruct *Struct)
Definition MassEntityElementTypes.h:55
U16 Index
Definition radfft.cpp:71
static uint32 GetCurrentThreadId(void)
Definition AndroidPlatformTLS.h:20
virtual void Execute(FMassEntityManager &EntityManager) const
Definition MassCommands.h:109
Definition MassCommandBuffer.h:99
MASSENTITY_API void MoveAppend(FMassCommandBuffer &InOutOther)
Definition MassCommandBuffer.cpp:229
void RemoveTag(FMassEntityHandle Entity)
Definition MassCommandBuffer.h:223
void PushCommand(const FMassEntityHandle Entity)
Definition MassCommandBuffer.h:130
void SwapTags(FMassEntityHandle Entity)
Definition MassCommandBuffer.h:245
bool HasPendingCommands() const
Definition MassCommandBuffer.h:284
void RemoveFragment(FMassEntityHandle Entity)
Definition MassCommandBuffer.h:186
void AddFragment_RuntimeCheck(FMassEntityHandle Entity)
Definition MassCommandBuffer.h:179
void DestroyEntity(FMassEntityHandle Entity)
Definition MassCommandBuffer.h:260
void RemoveFragment_RuntimeCheck(FMassEntityHandle Entity)
Definition MassCommandBuffer.h:193
MASSENTITY_API FMassCommandBuffer()
Definition MassCommandBuffer.cpp:77
bool IsInOwnerThread() const
Definition MassCommandBuffer.h:302
void PushCommand(TArgs &&... InArgs)
Definition MassCommandBuffer.h:117
void AddTag_RuntimeCheck(FMassEntityHandle Entity)
Definition MassCommandBuffer.h:215
void RemoveTag(TConstArrayView< FMassEntityHandle > Entities)
Definition MassCommandBuffer.h:230
void CancelCommands()
Definition MassCommandBuffer.h:297
void PushCommand(const FMassEntityHandle Entity, TArgs &&... InArgs)
Definition MassCommandBuffer.h:105
void PushCommand(TConstArrayView< FMassEntityHandle > Entities)
Definition MassCommandBuffer.h:141
void AddTag(FMassEntityHandle Entity)
Definition MassCommandBuffer.h:201
MASSENTITY_API SIZE_T GetAllocatedSize() const
Definition MassCommandBuffer.cpp:246
void ForceUpdateCurrentThreadID()
Definition MassCommandBuffer.cpp:89
void RemoveTag_RuntimeCheck(FMassEntityHandle Entity)
Definition MassCommandBuffer.h:237
MASSENTITY_API ~FMassCommandBuffer()
Definition MassCommandBuffer.cpp:82
void DestroyEntities(TArray< FMassEntityHandle > &&InEntitiesToDestroy)
Definition MassCommandBuffer.h:270
void DestroyEntities(TConstArrayView< FMassEntityHandle > InEntitiesToDestroy)
Definition MassCommandBuffer.h:265
void SwapTags_RuntimeCheck(FMassEntityHandle Entity)
Definition MassCommandBuffer.h:253
bool IsFlushing() const
Definition MassCommandBuffer.h:288
void AddFragment(FMassEntityHandle Entity)
Definition MassCommandBuffer.h:172
void PushUniqueCommand(TUniquePtr< FMassBatchedCommand > &&CommandInstance)
Definition MassCommandBuffer.h:159
void AddTag(TConstArrayView< FMassEntityHandle > Entities)
Definition MassCommandBuffer.h:208
Definition MassEntityHandle.h:13
Definition MassEntityManager.h:96
Definition MassCommands.h:83
Definition MassCommandBuffer.h:43