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);
            }
        }