public void SetSourceEvent(FmodEvent srcEvent) { if (m_source == srcEvent) { return; } CleanRuntimeEvent(); m_source = srcEvent; if (m_source != null) { UpdateRestorationData(); m_type = m_source.getSourceType(); setMaxRange(m_source.m_maxRange); setMinRange(m_source.m_minRange); if (m_parameters != null) { CleanAndRemoveParameters(); } else { m_parameters = new List <FmodRuntimeEventParameter>(); } foreach (FmodEventParameter p in m_source.getParameters()) { FmodRuntimeEventParameter runtimeParam = gameObject.AddComponent <FmodRuntimeEventParameter>(); runtimeParam.Initialize(p); m_parameters.Add(runtimeParam); } } else { CleanAndRemoveParameters(); } }
public void UpdateExistingEvent(FmodEvent newEvent) { #if UNITY_EDITOR List <FmodRuntimeEventParameter> oldParams = getParameters(); List <FmodRuntimeEventParameter> toRemove = new List <FmodRuntimeEventParameter>(); //checking for existing params foreach (FmodRuntimeEventParameter oldParam in oldParams) { FmodEventParameter matchingParam = newEvent.getParameter(oldParam.getName()); if (matchingParam == null) { toRemove.Add(oldParam); } else { oldParam.UpdateExistingParam(matchingParam); } } //removing previously existing params that have been deleted foreach (FmodRuntimeEventParameter toDelete in toRemove) { m_parameters.Remove(toDelete); DestroyImmediate(toDelete, true); } PrefabType prefabType = PrefabUtility.GetPrefabType(gameObject); // checking for newly created params if (prefabType != PrefabType.PrefabInstance && prefabType != PrefabType.ModelPrefabInstance) { foreach (FmodEventParameter newParam in newEvent.getParameters()) { if (ParameterExists(newParam.getName()) == false) { FmodRuntimeEventParameter runtimeParam = gameObject.AddComponent <FmodRuntimeEventParameter>(); runtimeParam.Initialize(newParam); m_parameters.Add(runtimeParam); } } } m_source = newEvent; #endif }