/// <summary> /// Get the <see cref="NetFieldExportGroup"/> by the Actor guid. /// </summary> /// <param name="netguid"></param> /// <returns><see cref="NetFieldExportGroup"/></returns> public NetFieldExportGroup GetNetFieldExportGroup(uint netguid) { if (!_archTypeToExportGroup.TryGetValue(netguid, out var group)) { if (!NetGuidToPathName.TryGetValue(netguid, out var path)) { return(null); } if (NetFieldExportGroupMapPathFixed.TryGetValue(netguid, out group)) { _archTypeToExportGroup[netguid] = NetFieldExportGroupMapPathFixed[netguid]; return(group); } foreach (var groupPathKvp in NetFieldExportGroupMap) { var groupPath = groupPathKvp.Key; if (!_cleanedPaths.TryGetValue(groupPathKvp.Value.PathNameIndex, out var groupPathFixed)) { groupPathFixed = groupPath.RemoveAllPathPrefixes(); _cleanedPaths[groupPathKvp.Value.PathNameIndex] = groupPathFixed; } if (path.Contains(groupPathFixed, StringComparison.Ordinal)) { NetFieldExportGroupMapPathFixed[netguid] = NetFieldExportGroupMap[groupPath]; _archTypeToExportGroup[netguid] = NetFieldExportGroupMap[groupPath]; return(NetFieldExportGroupMap[groupPath]); } } var cleanedPath = path.CleanPathSuffix(); foreach (var groupPathKvp in NetFieldExportGroupMap) { var groupPath = groupPathKvp.Key; if (_cleanedPaths.TryGetValue(groupPathKvp.Value.PathNameIndex, out var groupPathFixed)) { if (groupPathFixed.Contains(cleanedPath, StringComparison.Ordinal)) { NetFieldExportGroupMapPathFixed[netguid] = NetFieldExportGroupMap[groupPath]; _archTypeToExportGroup[netguid] = NetFieldExportGroupMap[groupPath]; return(NetFieldExportGroupMap[groupPath]); } } } return(null); } return(group); }
/// <summary> /// Empty the NetGuidCache /// </summary> public void Cleanup() { NetFieldExportGroupIndexToGroup.Clear(); NetFieldExportGroupMap.Clear(); NetGuidToPathName.Clear(); ObjectLookup.Clear(); NetFieldExportGroupMapPathFixed.Clear(); _archTypeToExportGroup.Clear(); _cleanedPaths.Clear(); _cleanedClassNetCache.Clear(); }
/// <summary> /// Empty the NetGuidCache /// </summary> public void Cleanup() { NetFieldExportGroupIndexToGroup.Clear(); NetFieldExportGroupMap.Clear(); NetGuidToPathName.Clear(); //ObjectLookup.Clear(); NetFieldExportGroupMapPathFixed.Clear(); _networkGameplayTagNodeIndex = null; _archTypeToExportGroup.Clear(); _cleanedPaths.Clear(); _cleanedClassNetCache.Clear(); _failedPaths.Clear(); }