public void Deserialize(IDictionary <string, object> dict) { try { root_effect.Deserialize(dict["root_effect"] as IDictionary <string, object>); //Generics = worthless at this point. Thanks unity! //Should probably redesign a better native format for unity, parsed from the hdf try { pattern_definitions = parseDefinitionsDict <JsonSequenceAtom>( dict["pattern_definitions"] as IDictionary <string, object> ); } catch (KeyNotFoundException e) { #if UNITY_EDITOR UnityEngine.Debug.LogException("In pats: " + e.Message + "\n"); #else Console.WriteLine("[Error] Exception from pattern parsing: " + e.Message + "\n"); #endif } try { sequence_definitions = parseDefinitionsDict <JsonEffectAtom>( dict["sequence_definitions"] as IDictionary <string, object> ); } catch (KeyNotFoundException e) { #if UNITY_EDITOR UnityEngine.Debug.LogException("[Error] Exception from pattern parsing: " + e.Message + "\n"); #else Console.WriteLine("[Error] Exception from pattern parsing: " + e.Message + "\n"); #endif } try { experience_definitions = parseDefinitionsDict <JsonPatternAtom>( dict["experience_definitions"] as IDictionary <string, object> ); } catch (KeyNotFoundException e) { #if UNITY_EDITOR UnityEngine.Debug.LogException("[Error] Exception from experience parsing: " + e.Message + "\n"); #else Console.WriteLine("[Error] Exception from experience parsing: " + e.Message + "\n"); #endif } } catch (Exception e) { var exep = new HapticsAssetException("Couldn't parse the haptic asset", e); #if UNITY_EDITOR Debug.LogException(exep); #else Console.WriteLine(exep.Message); #endif } }
public IDictionary <string, object> SerializeToDictionary() { IDictionary <string, object> dict = new Dictionary <string, object>(); try { #region Root Effect if (root_effect != null) { var result = root_effect.SerializeToDictionary(); if (result != null && result.Count > 0) { dict.Add("root_effect", result); } } #endregion #region Sequences try { IDictionary <string, object> output = encodeDefinitionsDict <JsonEffectAtom>(sequence_definitions); if (output.Count > 0) { dict.Add("sequence_definitions", output); } } catch (KeyNotFoundException e) { Debug.LogError("In seqs: " + e.Message + "\n"); } #endregion #region Patterns try { //Console.WriteLine("Attempting to encode pattern definitions"); IDictionary <string, object> output = encodeDefinitionsDict <JsonSequenceAtom>(pattern_definitions); if (output.Count > 0) { dict.Add("pattern_definitions", output); } //Console.WriteLine("pattern definitions: " + dict.Count); foreach (var kvp in output) { Console.WriteLine(kvp.Key.ToString() + " " + kvp.Value.ToString() + "\n"); } //pattern_definitions = encodeDefinitionsDict<JsonSequenceAtom>( // dict["pattern_definitions"] as IDictionary<string, object>); } catch (KeyNotFoundException e) { Debug.LogError("In pats: " + e.Message + "\n"); } #endregion #region Experiences try { IDictionary <string, object> output = encodeDefinitionsDict <JsonPatternAtom>(experience_definitions); if (output.Count > 0) { dict.Add("experience_definitions", output); } //experience_definitions = parseDefinitionsDict<JsonPatternAtom>( // dict["experience_definitions"] as IDictionary<string, object>); } catch (KeyNotFoundException e) { Debug.LogError("In exps: " + e.Message + "\n"); } #endregion } #region Catch Exception catch (Exception e) { var exep = new HapticsAssetException("Couldn't parse the haptic asset", e); #if UNITY_EDITOR Debug.LogException(exep); #else Console.WriteLine("Failed to encode\n\t" + e.Message); #endif } #endregion return(dict); }