/// <inheritdoc /> public void AddEntity(AddEntityPipelineOp addEntityOp) { if (!inCriticalSection) { Debug.LogErrorFormat("CriticalSectionPipelineBlock received AddEntityPipelineOp for entity {0} outside of critical section", addEntityOp.EntityId); return; } criticalSectionEntityOps.Enqueue(addEntityOp); }
/// <inheritdoc /> public void AddEntity(AddEntityPipelineOp addEntityOp) { if (!IsEntityTracked(addEntityOp.EntityId)) { knownEntities.Add(addEntityOp.EntityId); var spawnData = new EntitySpawnData(); entitiesToSpawn.Add(addEntityOp.EntityId, spawnData); spawnData.StalledOps.Enqueue(addEntityOp); metrics.IncrementGauge(EntityCountGaugeName); } else { Debug.LogErrorFormat("Trying to add the entity '{0}' that already exists.", addEntityOp.EntityId); } }
/// <inheritdoc /> public void AddEntity(AddEntityPipelineOp addEntityOp) { if (spawnLimiter.CanSpawnEntity() && !IsEntityQueued(addEntityOp.EntityId)) { NextEntityBlock.AddEntity(addEntityOp); spawnLimiter.EntityAdded(addEntityOp.EntityId); } else { Queue <IEntityPipelineOp> queue; if (!entityActions.TryGetValue(addEntityOp.EntityId, out queue)) { queue = entityActions[addEntityOp.EntityId] = new Queue <IEntityPipelineOp>(); workerMetrics.IncrementGauge(QueueSizeMetricName); entitiesToAdd.Enqueue(addEntityOp.EntityId); } queue.Enqueue(addEntityOp); } }