void HandleDeadUnits() { foreach (var id in deadUnitIds) { var comp = new BaseUnitReviveTimer.Component() { IsStart = true, RestTime = time, }; base.SetComponent(id, comp); } deadUnitIds.Clear(); }
private void Query(Entity entity, ref BaseUnitReviveTimer.Component revive, ref BaseUnitStatus.Component status, ref SpatialEntityId entityId) { if (revive.IsStart == false) { return; } if (status.Type.BaseType() == UnitBaseType.Fixed) { return; } switch (status.State) { case UnitState.None: return; case UnitState.Alive: revive.IsStart = false; revive.RestTime = 0.0f; return; } if (revive.RestTime > 0) { revive.RestTime -= deltaTime; } var id = entityId.EntityId; if (revive.RestTime < 0 && deletedIds.Contains(id) == false) { var request = new WorldCommands.DeleteEntity.Request ( id, context: new DeleteUnitContext() { entityId = id } ); this.CommandSystem.SendCommand(request); deletedIds.Add(id); } }