public void OnBeforeSerialize() { if (serialized) { return; } serialized = true; store.Clear(); store = SaveToStore(parameters); }
SerializedObjectStore SaveToStore(Dictionary <string, object> dict) { SerializedObjectStore store = new SerializedObjectStore(); foreach (KeyValuePair <string, object> pair in dict) { Type type = pair.Value.GetType(); switch (type.Name) { case "Int32": store.intValues.Add(pair.Key, (int)pair.Value); break; case "Single": store.floatValues.Add(pair.Key, (float)pair.Value); break; case "Boolean": store.boolValues.Add(pair.Key, (bool)pair.Value); break; case "Vector2": store.vec2Values.Add(pair.Key, (Vector2)pair.Value); break; case "Vector3": store.vec3Values.Add(pair.Key, (Vector3)pair.Value); break; case "Vector4": store.vec4Values.Add(pair.Key, (Vector4)pair.Value); break; case "AnimationCurve": store.animCurveValues.Add(pair.Key, (AnimationCurve)pair.Value); break; case "Color": store.colorValues.Add(pair.Key, (Color)pair.Value); break; } } return(store); }
Dictionary <string, object> LoadFromStore(SerializedObjectStore store) { Dictionary <string, object> merged = new Dictionary <string, object>(); foreach (KeyValuePair <string, int> pair in store.intValues) { merged.Add(pair.Key, pair.Value); } foreach (KeyValuePair <string, float> pair in store.floatValues) { merged.Add(pair.Key, pair.Value); } foreach (KeyValuePair <string, bool> pair in store.boolValues) { merged.Add(pair.Key, pair.Value); } foreach (KeyValuePair <string, Vector2> pair in store.vec2Values) { merged.Add(pair.Key, pair.Value); } foreach (KeyValuePair <string, Vector3> pair in store.vec3Values) { merged.Add(pair.Key, pair.Value); } foreach (KeyValuePair <string, Vector4> pair in store.vec4Values) { merged.Add(pair.Key, pair.Value); } foreach (KeyValuePair <string, AnimationCurve> pair in store.animCurveValues) { merged.Add(pair.Key, pair.Value); } foreach (KeyValuePair <string, Color> pair in store.colorValues) { merged.Add(pair.Key, pair.Value); } return(merged); }