5template <
typename SkeletalMeshMeshDynamicDataType>
11 return Channel->
Update(*
this, MeshDynamicData);
30 Head = Tail = Command;
39template <
typename LambdaType>
40void FSkeletalMeshUpdateChannel::FDynamicDataList::Consume(
LambdaType&& Lambda)
49 Head = Tail =
nullptr;
54template <
typename SkeletalMeshUpdatePacketType>
60 using MeshObjectType =
typename SkeletalMeshUpdatePacketType::MeshObjectType;
61 using MeshDynamicDataType =
typename SkeletalMeshUpdatePacketType::MeshDynamicDataType;
63 for (FOp Op : OpStream.Ops)
69 const int32 ExpectedSize = Op.HandleIndex + 1;
70 if (SlotRegistry.Slots.Num() < ExpectedSize)
72 SlotRegistry.Slots.SetNum(ExpectedSize);
73 SlotRegistry.SlotBits.SetNum(ExpectedSize,
false);
75 SlotRegistry.Slots[Op.HandleIndex].MeshObject = Op.Data_Add.MeshObject;
78 case FOp::EType::Remove:
80 FSlot& Slot = SlotRegistry.Slots[Op.HandleIndex];
86 SlotRegistry.SlotBits[Op.HandleIndex] =
false;
89 case FOp::EType::Update:
91 FSlot& Slot = SlotRegistry.Slots[Op.HandleIndex];
92 check(Slot.MeshObject);
93 Slot.UpdateList.Add(Op.Data_Update.MeshDynamicData);
94 SlotRegistry.SlotBits[Op.HandleIndex] =
true;
102 FSlot& Slot = SlotRegistry.Slots[It.GetIndex()];
103 auto* MeshObject =
static_cast<MeshObjectType*
>(Slot.MeshObject);
109 UpdatePacket.UpdateImmediate(RHICmdList, MeshObject, MeshDynamicData);
118 SlotRegistry.SlotBits.Init(
false, SlotRegistry.SlotBits.Num());
124template <
typename SkeletalMeshObjectType>
127 return Channels[FSkeletalMeshUpdateChannel::GetChannelIndex<SkeletalMeshObjectType>()].Create(MeshObject);
#define check(expr)
Definition AssertionMacros.h:314
#define ensure( InExpression)
Definition AssertionMacros.h:464
#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 TRACE_CPUPROFILER_EVENT_SCOPE(Name)
Definition CpuProfilerTrace.h:528
CORE_API bool IsInParallelRenderingThread()
Definition ThreadingBase.cpp:301
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition RHICommandList.h:3819
Definition SkeletalMeshUpdater.h:96
void Release(FSkeletalMeshUpdateHandle &&Handle)
Definition SkeletalMeshUpdater.cpp:232
bool Update(const FSkeletalMeshUpdateHandle &Handle, FSkeletalMeshDynamicData *MeshDynamicData)
Definition SkeletalMeshUpdater.cpp:252
bool IsChannelFor() const
Definition SkeletalMeshUpdater.h:637
Definition SkeletalMeshUpdater.h:353
bool Update(SkeletalMeshDynamicDataType *MeshDynamicData)
void Release()
Definition SkeletalMeshUpdater.inl:16
FSkeletalMeshUpdateHandle Create(SkeletalMeshObjectType *MeshObject)
Definition SkeletalMeshUpdater.inl:125
Definition BitArray.h:1944
const Type Command
Definition GenericApplication.h:46