Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
ai.fluctio.fluctio-sim / Utils / SerializableClasses / SerializableDictionary.cs
Size: Mime:
using System;
using System.Collections.Generic;
using System.Linq;
using Fluctio.FluctioSim.Utils.Extensions;
using UnityEngine;

namespace Fluctio.FluctioSim.Utils.SerializableClasses
{
	[Serializable]
	public class SerializableDictionary<TKey, TValue> : Dictionary<TKey, TValue>, ISerializationCallbackReceiver
	{
		
		[SerializeField] private TKey[] keys;
		[SerializeField] private TValue[] values;
		
		public void OnBeforeSerialize()
		{
			keys = Keys.ToArray();
			values = Values.ToArray();
		}

		public void OnAfterDeserialize()
		{
			Clear();
			var pairs = LinqExtensions.ZipKeyValue(keys, values);
			foreach (var pair in pairs)
			{
				this[pair.Key] = pair.Value;
			}
			keys = null;
			values = null;
		}
		
	}
}