/// <summary> /// MonoBehaviour OnDestroy /// </summary> protected virtual void OnDestroy() { if (mapWorker) { mapWorker = null; UpdateMapInLocalizer(); } if (MapInfo != null) { MapInfo = null; } }
private void UpdateMapInLocalizer() { if (MapInfo == null) { return; } if ((SourceType == DataSource.MapBuilder && !string.IsNullOrEmpty(MapInfo.ID)) || (SourceType != DataSource.MapBuilder && string.IsNullOrEmpty(MapInfo.ID))) { return; } if (loader && loader != mapWorker) { switch (SourceType) { case DataSource.MapBuilder: loader.UnloadSparseSpatialMapBuild(this); loader = null; break; case DataSource.MapManager: loader.UnloadSparseSpatialMap(this, (map, status, error) => { if (MapUnload != null) { MapUnload(map, status, error); } }); loader = null; break; default: break; } } if (mapWorker && mapWorker != loader) { var worker = mapWorker; switch (SourceType) { case DataSource.MapBuilder: mapWorker.LoadSparseSpatialMapBuild(this); loader = mapWorker; break; case DataSource.MapManager: mapWorker.LoadSparseSpatialMap(this, (map, status, error) => { if (worker == mapWorker && !status) { loader = null; } if (MapLoad != null) { MapLoad(map, status, error); } }); loader = mapWorker; break; default: break; } } }