static void InitializeParamRef(EditorParamRef paramRef, FMOD.Studio.PARAMETER_DESCRIPTION description) { paramRef.Name = description.name; paramRef.Min = description.minimum; paramRef.Max = description.maximum; paramRef.Default = description.defaultvalue; paramRef.IsGlobal = (description.flags & FMOD.Studio.PARAMETER_FLAGS.GLOBAL) != 0; if ((description.flags & FMOD.Studio.PARAMETER_FLAGS.DISCRETE) != 0) { paramRef.Type = ParameterType.Discrete; } else { paramRef.Type = ParameterType.Continuous; } }
static void UpdateCacheBank(EditorBankRef bankRef) { // Clear out any cached events from this bank eventCache.EditorEvents.ForEach((x) => x.Banks.Remove(bankRef)); FMOD.Studio.Bank bank; bankRef.LoadResult = EditorUtils.System.loadBankFile(bankRef.Path, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out bank); if (bankRef.LoadResult == FMOD.RESULT.ERR_EVENT_ALREADY_LOADED) { EditorUtils.System.getBank(bankRef.Name, out bank); bank.unload(); bankRef.LoadResult = EditorUtils.System.loadBankFile(bankRef.Path, FMOD.Studio.LOAD_BANK_FLAGS.NORMAL, out bank); } if (bankRef.LoadResult == FMOD.RESULT.OK) { // Iterate all events in the bank and cache them FMOD.Studio.EventDescription[] eventList; var result = bank.getEventList(out eventList); if (result == FMOD.RESULT.OK) { foreach (var eventDesc in eventList) { string path; result = eventDesc.getPath(out path); EditorEventRef eventRef = eventCache.EditorEvents.Find((x) => x.Path == path); if (eventRef == null) { eventRef = ScriptableObject.CreateInstance <EditorEventRef>(); AssetDatabase.AddObjectToAsset(eventRef, eventCache); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(eventRef)); eventRef.Banks = new List <EditorBankRef>(); eventCache.EditorEvents.Add(eventRef); eventRef.Parameters = new List <EditorParamRef>(); } eventRef.Banks.Add(bankRef); Guid guid; eventDesc.getID(out guid); eventRef.Guid = guid; eventRef.Path = eventRef.name = path; eventDesc.is3D(out eventRef.Is3D); eventDesc.isOneshot(out eventRef.IsOneShot); eventDesc.isStream(out eventRef.IsStream); eventDesc.getMaximumDistance(out eventRef.MaxDistance); eventDesc.getMinimumDistance(out eventRef.MinDistance); eventDesc.getLength(out eventRef.Length); int paramCount = 0; eventDesc.getParameterDescriptionCount(out paramCount); eventRef.Parameters.ForEach((x) => x.Exists = false); for (int paramIndex = 0; paramIndex < paramCount; paramIndex++) { FMOD.Studio.PARAMETER_DESCRIPTION param; eventDesc.getParameterDescriptionByIndex(paramIndex, out param); if ((param.flags & FMOD.Studio.PARAMETER_FLAGS.READONLY) != 0) { continue; } EditorParamRef paramRef = eventRef.Parameters.Find((x) => x.name == param.name); if (paramRef == null) { paramRef = ScriptableObject.CreateInstance <EditorParamRef>(); AssetDatabase.AddObjectToAsset(paramRef, eventCache); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(paramRef)); eventRef.Parameters.Add(paramRef); } paramRef.Name = param.name; paramRef.name = "parameter:/" + Path.GetFileName(path) + "/" + paramRef.Name; paramRef.Min = param.minimum; paramRef.Max = param.maximum; paramRef.Default = param.defaultvalue; paramRef.Exists = true; } eventRef.Parameters.RemoveAll((x) => !x.Exists); } } // Update global parameter list for each bank FMOD.Studio.PARAMETER_DESCRIPTION[] parameterDescriptions; result = EditorUtils.System.getParameterDescriptionList(out parameterDescriptions); if (result == FMOD.RESULT.OK) { for (int i = 0; i < parameterDescriptions.Length; i++) { FMOD.Studio.PARAMETER_DESCRIPTION param = parameterDescriptions[i]; if (param.flags == FMOD.Studio.PARAMETER_FLAGS.GLOBAL) { EditorParamRef paramRef = eventCache.EditorParameters.Find((x) => (parameterDescriptions[i].id.data1 == x.ID.data1 && param.id.data2 == x.ID.data2)); if (paramRef == null) { paramRef = ScriptableObject.CreateInstance <EditorParamRef>(); AssetDatabase.AddObjectToAsset(paramRef, eventCache); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(paramRef)); eventCache.EditorParameters.Add(paramRef); paramRef.ID = param.id; } paramRef.Name = paramRef.name = param.name; paramRef.Min = param.minimum; paramRef.Max = param.maximum; paramRef.Default = param.defaultvalue; paramRef.Exists = true; } } } bank.unload(); } else { Debug.LogError(string.Format("FMOD Studio: Unable to load {0}: {1}", bankRef.Name, FMOD.Error.String(bankRef.LoadResult))); eventCache.StringsBankWriteTime = DateTime.MinValue; } }
public RESULT getParameter(string name, out PARAMETER_DESCRIPTION parameter) { parameter = new FMOD.Studio.PARAMETER_DESCRIPTION(); return FMOD_Studio_EventDescription_GetParameter(rawPtr, name, out parameter); }
public RESULT getParameterByIndex(int index, out PARAMETER_DESCRIPTION parameter) { parameter = new FMOD.Studio.PARAMETER_DESCRIPTION(); return FMOD_Studio_EventDescription_GetParameterByIndex(rawPtr, index, out parameter); }
public RESULT getParameter(string name, out PARAMETER_DESCRIPTION parameter) { parameter = new FMOD.Studio.PARAMETER_DESCRIPTION(); return(FMOD_Studio_EventDescription_GetParameter(rawPtr, name, out parameter)); }
public RESULT getParameterByIndex(int index, out PARAMETER_DESCRIPTION parameter) { parameter = new FMOD.Studio.PARAMETER_DESCRIPTION(); return(FMOD_Studio_EventDescription_GetParameterByIndex(rawPtr, index, out parameter)); }