/// <summary> /// Create a HapticPattern from a HapticDefinitionFile /// </summary> /// <param name="key">Name of the root effect</param> /// <param name="hdf">A HapticDefinitionFile containing the root effect</param> /// <returns></returns> public static HapticPattern CreatePatternFromHDF(string key, HapticDefinitionFile hdf) { string cleanedKey = HapticResources.CleanName(key); if (LoadedPatterns.ContainsKey(cleanedKey)) { //Debug.Log("Pattern: " + cleanedKey + " already exists, returning it instead of needless reconstruction\n"); return(LoadedPatterns[cleanedKey].Pattern); } HapticPattern pat = ScriptableObject.CreateInstance <HapticPattern>(); var pattern_def_array = hdf.pattern_definitions[key]; foreach (var element in pattern_def_array) { //Debug.Log("Pattern Def Array: " + key + " " + element.sequence + "\n"); HapticSequence thisSeq = CreateSequenceFromHDF(element.sequence, hdf); thisSeq.name = element.sequence; ParameterizedSequence paraSeq = new ParameterizedSequence(thisSeq, element.ParseAreaFlag(), element.time, element.strength); pat.AddSequence(paraSeq); } EnsurePatternIsRemembered(cleanedKey, pat); return(pat); }
public static void EnsureSequenceIsRemembered(string key, HapticSequence sequence) { key = HapticResources.CleanName(key); if (!LoadedSequences.ContainsKey(key) && sequence != null) { LoadedSequences.Add(key, new SequenceImportData(sequence, key)); } }
public static void EnsurePatternIsRemembered(string key, HapticPattern pattern) { key = HapticResources.CleanName(key); if (!LoadedPatterns.ContainsKey(key) && pattern != null) { LoadedPatterns.Add(key, new PatternImportData(pattern, key)); } }
/// <summary> /// Create a HapticExperience from a HapticDefinitionFile /// </summary> /// <param name="key"></param> /// <param name="hdf"></param> /// <returns></returns> public static HapticExperience CreateExperienceFromHDF(string key, HapticDefinitionFile hdf) { string cleanedKey = HapticResources.CleanName(key); HapticExperience exp = ScriptableObject.CreateInstance <HapticExperience>(); var experience_def_array = hdf.experience_definitions[key]; foreach (var element in experience_def_array) { HapticPattern thisPat = CreatePatternFromHDF(element.pattern, hdf); thisPat.name = element.pattern; ParameterizedPattern paraPat = new ParameterizedPattern(thisPat, element.time, element.strength); exp.AddPattern(paraPat); } return(exp); }
/// <summary> /// Create a HapticSequence from a HapticDefinitionFile /// </summary> /// <param name="key">Name of the root effect</param> /// <param name="hdf">A HapticDefinitionFile containing the root effect</param> /// <returns></returns> public static HapticSequence CreateSequenceFromHDF(string key, HapticDefinitionFile hdf) { string cleanedKey = HapticResources.CleanName(key); if (LoadedSequences.ContainsKey(cleanedKey)) { //Debug.Log("Sequence: " + cleanedKey + " already exists, returning it instead of needless reconstruction\n"); return(LoadedSequences[cleanedKey].Sequence); } //Debug.Log("Sequence: " + cleanedKey + " DOES NOT exist, creating a new one\n"); HapticSequence seq = ScriptableObject.CreateInstance <HapticSequence>(); var sequence_def_array = hdf.sequence_definitions[key]; foreach (var effect in sequence_def_array) { seq.AddEffect(new HapticEffect(effect.ParseEffect(), effect.time, effect.duration, effect.strength)); } EnsureSequenceIsRemembered(cleanedKey, seq); return(seq); }