private void RemoveAsset(VoxelData voxelData)
        {
            if (voxelData.IsNeutral)
            {
                return;
            }

            long id;

            if (m_voxelDataToId.TryGetValue(voxelData, out id))
            {
                m_voxelDataToId.Remove(voxelData);

                MatchAssetCli asset = m_idToAsset[id];

                if (asset.VoxelData.Weight >= GameConstants.MinVoxelActorWeight)
                {
                    Coordinate coordinate = new Coordinate(asset.Cell, asset.VoxelData);
                    int        radius     = asset.Abilities.VisionRadius;
                    m_voxelMap.Map.ForEachInRadius(coordinate, radius, (ignoredCell, pos) =>
                    {
                        IgnoreCell(asset.VoxelData.Owner, ignoredCell, pos, coordinate.Weight);
                    });

                    m_minimap.Die(voxelData, new Coordinate(asset.Cell, voxelData));
                }

                m_idToAsset.Remove(id);

                if (asset.Assignment != null)
                {
                    AssignmentsController.RemoveAssignment(asset, DieCallback);
                }

                if (asset.TargetForAssignments != null)
                {
                    AssignmentsController.RemoveTargetFromAssignments(asset, DieCallback);
                }

                if (AssetRemoved != null)
                {
                    AssetRemoved(asset);
                }
                asset.Destroy();
            }
        }