29 const U32 updateMask = comp->_transformUpdatedMask.load();
53 events.emplace_back(comp, previousMask);
61 if (descriptor.
_iterCount > g_parallelPartitionSize * 3)
66 for (U32 i = start; i < end; ++i)
68 events[i].first->updateLocalMatrix( interpFactor );
74 for (
U32 i = 0u; i < descriptor._iterCount; ++i)
76 events[i].first->updateLocalMatrix( interpFactor );
80 for (
const auto& [comp, mask] : events)
82 comp->parentSGN()->SendEvent(
95 void TransformSystem::PostUpdate(
const F32 dt)
99 Parent::PostUpdate(dt);
103 comp->updateCachedValues();
109 if (Parent::saveCache(sgn, outputBuffer))
112 if (tComp !=
nullptr && !tComp->
saveCache(outputBuffer))
125 if (Parent::loadCache(sgn, inputBuffer))
128 if (tComp !=
nullptr && !tComp->
loadCache(inputBuffer))
#define PROFILE_SCOPE_AUTO(CATEGORY)
static void setTransformDirty(SceneGraphNode *node, const U32 transformMask)
void PreUpdate(F32 dt) override
void Update(F32 dt) override
vector< TransformComponent * > _componentCache
static D64 FrameInterpolationFactor() noexcept
PlatformContext & _context
TaskPool & taskPool(const TaskPoolType type) noexcept
constexpr Optick::Category::Type Scene
Handle console commands that start with a forward slash.
constexpr U32 to_U32(const T value)
eastl::vector< Type > vector
void efficient_clear(eastl::fixed_vector< T, nodeCount, bEnableOverflow, OverflowAllocator > &fixed_vector)
void Parallel_For(TaskPool &pool, const ParallelForDescriptor &descriptor, const DELEGATE< void, const Task *, U32, U32 > &cbk)
constexpr auto to_base(const Type value) -> Type
U32 _partitionSize
How many elements should we process per async task.
U32 _iterCount
For loop iteration count.