protected void RegisterMapping(ResourceMappingChecker checker, ResourceMappingMapper mapper, ResourceMappingMode mappingMode, ResourceGameMode replacementGameMode = ResourceGameMode.All, string pathToWhitelist = null) { // turn off replacement if not supported by current mode if (!IsCurrentGameMode(replacementGameMode)) { mappingMode &= ~ResourceMappingMode.Replacement; } if (mappingMode == ResourceMappingMode.None) { return; } var mapperId = GetMapperId(mapper); var mapperEntries = _checkers.GetOrInit(checker); var entry = mapperEntries.FirstOrDefault(e => e.MapperId == mapperId); if (entry == null) { mapperEntries.Add(new MapperEntry(mapperId, mappingMode)); } else { entry.Mode |= mappingMode; } if (_checkerModes.ContainsKey(checker)) { _checkerModes[checker] |= mappingMode; } else { _checkerModes[checker] = mappingMode; } if (!pathToWhitelist.IsNullOrEmpty()) { WhiteListPaths.Add(pathToWhitelist); } if (!HasReplacementMappingsForCurrentGameMode && (mappingMode & ResourceMappingMode.Replacement) == ResourceMappingMode.Replacement && (replacementGameMode & _currentModeFlag) == _currentModeFlag) { HasReplacementMappingsForCurrentGameMode = true; } ResetCaches(); }
public ResourceMappingHelper() { WhiteListPaths.ValueChanged += PathListChanged; BlackListPaths.ValueChanged += PathListChanged; _currentModeFlag = IsStudio ? ResourceGameMode.StudioOnly : ResourceGameMode.GameOnly; }
public virtual bool IsCurrentGameMode(ResourceGameMode mode) { return((mode & _currentModeFlag) == _currentModeFlag); }