private void ParallelUpdate(float deltaTime) { MDebug.Assert(m_ParallelItemsCache.Count == 0, "Core", "m_ParallelTasksCache.Count == 0"); string lastGroupName = string.Empty; for (int iBehaviour = 0; iBehaviour < m_BehavioursForTraverse.Count; iBehaviour++) { BaseBehaviour iterBehaviour = m_BehavioursForTraverse[iBehaviour]; if (!iterBehaviour.CanUpdate() || !iterBehaviour.HasFeature(FeatureFlag.ParallelUpdate)) { continue; } string groupName = iterBehaviour.GetGroup(); if (groupName != lastGroupName) { ExecuteParallelUpdateGroup(); } lastGroupName = groupName; m_ParallelItemsCache.Add(m_ParallelItemPool.Alloc() .SetData(iterBehaviour, deltaTime)); } ExecuteParallelUpdateGroup(); }