/// <summary> /// Generic function for fetching a Wwise object with custom return options. /// </summary> /// <typeparam name="T"> Type of the object to be deserialized from the response.</typeparam> /// <param name="guid">GUID of the target object.</param> /// <param name="options">Specifies which object properties to include in the response</param> /// <param name="callback">Function accteping a list of T objects.</param> public static void GetWwiseObject <T>(System.Guid guid, ReturnOptions options, GetResultListDelegate <T> callback) { GetWwiseObjects(new List <System.Guid>() { guid }, options, callback); }
/// <summary> /// Subscribe to WAAPI topic. Refer to WAAPI reference documentation for a list of topics and their options. /// Creates and sends a WAAPI command to subscribe to the topic. /// </summary> /// <param name="subscription">SubscriptionInfo object containing the topic URI and the message handling callback.</param> /// <returns>Updated SubscriptionInfo object containing the subscription ID (uint). </returns> private static async Task <SubscriptionInfo> SubscribeAsync(SubscriptionInfo subscription) { var options = new ReturnOptions(new string[] { "id", "parent", "name", "type", "childrenCount", "path", "workunitType" }); uint id = await WaapiClient.Subscribe(subscription.Uri, options, subscription.Callback); subscription.SubscriptionId = id; return(subscription); }
/// <summary> /// Enqueues a command with a payload that desirializes the list of wwise objects from the response. /// </summary> /// <param name="args"></param> /// <param name="options"></param> /// <param name="callback"></param> public static void QueueCommandWithReturnWwiseObjects <T>(WaqlArgs args, ReturnOptions options, GetResultListDelegate <T> callback) { waapiCommandQueue.Enqueue(new WaapiCommand( async() => { var result = await WaapiClient.Call([email protected], args, options); var ret = UnityEngine.JsonUtility.FromJson <ReturnWwiseObjects <T> >(result); callback.Invoke(ret.@return); })); }
/// <summary> /// Get the children of a given object. /// </summary> /// <param name="guid">GUID of the target object.</param> /// <param name="options">Specifies which object properties to include in the response</param> /// <param name="callback">Function accepting a list of WwiseObjectInfo.</param> public static void GetChildren <T>(System.Guid guid, ReturnOptions options, GetResultListDelegate <T> callback) { if (guid == System.Guid.Empty) { return; } var args = new WaqlArgs($"from object \"{guid:B}\" select children orderby path"); QueueCommandWithReturnWwiseObjects(args, options, callback); }
private static async Task <List <WwiseObjectInfo> > GetProjectInfo() { var args = new WaqlArgs($"from type {WaapiKeywords.PROJECT}"); var options = new ReturnOptions(new string[] { "filePath" }); var result = await WaapiClient.Call([email protected], args, options); var ret = UnityEngine.JsonUtility.FromJson <ReturnWwiseObjects>(result).@return; return(ParseObjectInfo(ret)); }
public SearchCommand(MessageBus messageBus, ReturnOptions returnOptions = SearchQuery.DefaultReturnOptions, bool broadcastSearch = true, Func <SearchQuery, Task> queryCallback = null, Func <SearchResults, Task> resultsCallback = null) { MessageBus = messageBus ?? throw new ArgumentNullException("messageBus"); MessageBus.Subscribe <ServerSettingsChangedMessage>(m => CommandManager.InvalidateRequerySuggested()); ExecuteCallback = new Func <object, Task>(ExecuteSearch); CanExecuteCallback = InternalCanExecuteCallback; ErrorCallback = InternalErrorCallback; ReturnOptions = returnOptions; BroadcastSearch = broadcastSearch; QueryCallback = queryCallback; ResultsCallback = resultsCallback; }
/// <summary> /// Generic function for fetching a list of Wwise objects with custom return options. /// </summary> /// <typeparam name="T"> Type of the object to be deserialized from the response.</typeparam> /// <param name="guids">GUIDs of the target objects.</param> /// <param name="options">Specifies which object properties to include in the response</param> /// <param name="callback">Function accteping a list of T objects.</param> public static void GetWwiseObjects <T>(List <System.Guid> guids, ReturnOptions options, GetResultListDelegate <T> callback) { string guidString = ""; foreach (var guid in guids) { guidString += $"{guid:B} ,"; } var args = new WaqlArgs($"from object \"{guidString}\" "); QueueCommandWithReturnWwiseObjects(args, options, callback); }
/// <summary> /// Uses a waapi call to get the SoundBank's generated bank path, then opens the containing folder in the system's file browser. /// </summary> /// <param name="guid">GUID of the object to be found.</param> /// <returns>Awaitable Task.</returns> private static async Task OpenSoundBankInExplorerAsync(System.Guid guid) { var args = new WaqlArgs($"from object \"{guid:B}\""); var options = new ReturnOptions(new string[] { "soundbankBnkFilePath" }); var result = await WaapiClient.Call([email protected], args, options); var ret = UnityEngine.JsonUtility.FromJson <ReturnWwiseObjects>(result); var filePath = ret.@return[0].soundbankBnkFilePath; #if UNITY_EDITOR_OSX filePath = AkUtilities.ParseOsxPathFromWinePath(filePath); #endif UnityEditor.EditorUtility.RevealInFinder(filePath); }
/// <summary> /// Composes a WAQL "search" request based on the parameters and enqueues a WAAPI command. /// Passes the list of WwiseObjectInfo containing the search results to the callback /// </summary> /// <param name="searchString">Characters to search for.</param> /// <param name="options">Specifies which object properties to include in the response</param> /// <param name="objectType">An optional object type used to filter search results.</param> /// <param name="callback">Function accepting a list of WwiseObjectInfo.</param> public static void Search <T>(string searchString, WwiseObjectType objectType, ReturnOptions options, GetResultListDelegate <T> callback) { WaqlArgs args; if (objectType == WwiseObjectType.None) { args = new WaqlArgs($"from search \"{searchString}\" orderby path"); } else { args = new WaqlArgs($"from search \"{searchString}\" where type=\"{WaapiKeywords.WwiseObjectTypeStrings[objectType]}\" orderby path"); } QueueCommandWithReturnWwiseObjects(args, options, callback); }
/// <summary> /// Composes a WAQL "from object" request based on the parameters and enqueues a WAAPI command. /// Passes the list of WwiseObjectInfo containing the results to the callback /// </summary> /// <param name="identifier">Can bethe target object GUID or path within the heirarchy.</param> /// <param name="options">Specifies which object properties to include in the response</param> /// <param name="depth">Depth of descendants to fetch. If -1, fetches all descendants.</param> /// <param name="callback">Function accepting a list of WwiseObjectInfo.</param> public static void GetWwiseObjectAndDescendants <T>(string identifier, ReturnOptions options, int depth, GetResultListDelegate <T> callback) { WaqlArgs args; if (depth > 0) { string selectString = System.String.Join(" ", ArrayList.Repeat(" select this, children", depth).ToArray()); args = new WaqlArgs($"from object \"{identifier}\" {selectString} orderby path"); } else { args = new WaqlArgs($"from object \"{identifier}\" select descendants orderby path"); } QueueCommandWithReturnWwiseObjects(args, options, callback); }
public BeginSearchMessage(ReturnOptions returnOptions, bool isPaging = false) { ReturnOptions = returnOptions; IsPaging = isPaging; }
public static IEnumerable <string> SafeEnumerateFileAndDirNames(this string path, string filePattern, string dirPattern, SearchOption searchOpt = SearchOption.TopDirectoryOnly, ReturnOptions returnOpt = ReturnOptions.ReturnBoth) { var searchQueue = new Queue <string>() { path }; while (searchQueue.Count > 0) { var cdn = searchQueue.Dequeue(); IEnumerable <string> cdiFiles = null; if (returnOpt.HasFlag(ReturnOptions.ReturnFiles)) { try { cdiFiles = Directory.EnumerateFiles(cdn, filePattern, SearchOption.TopDirectoryOnly); } catch (Exception) { } if (cdiFiles != null) { foreach (var filename in cdiFiles) { yield return(filename); } } } if ((!returnOpt.HasFlag(ReturnOptions.ReturnFiles) || cdiFiles != null) && (returnOpt.HasFlag(ReturnOptions.ReturnDirectories) || searchOpt == SearchOption.AllDirectories)) // skip if file enumeration failed { IEnumerable <string> cdiDirs = null; try { cdiDirs = Directory.EnumerateDirectories(cdn, dirPattern, SearchOption.TopDirectoryOnly); } catch (Exception) { } if (cdiDirs != null) { foreach (var dirname in cdiDirs) { if (searchOpt == SearchOption.AllDirectories) { searchQueue.Enqueue(dirname); } if (returnOpt.HasFlag(ReturnOptions.ReturnDirectories)) { yield return(dirname); } } } } } }
public static IEnumerable <FileSystemInfo> SafeEnumerateFileSystemInfos(this DirectoryInfo di, string filePattern, string dirPattern, SearchOption searchOpt = SearchOption.TopDirectoryOnly, ReturnOptions returnOpt = ReturnOptions.ReturnBoth) { var searchQueue = new Queue <DirectoryInfo>(); searchQueue.Enqueue(di); while (searchQueue.Count > 0) { var cdi = searchQueue.Dequeue(); IEnumerable <string> cdiFiles = null; if (returnOpt.HasFlag(ReturnOptions.ReturnFiles)) { try { cdiFiles = Directory.EnumerateFiles(cdi.FullName, filePattern, SearchOption.TopDirectoryOnly); } catch (Exception) { } if (cdiFiles != null) { var cfis = new ConcurrentBag <FileInfo>(); cdiFiles.AsParallel() .ForAll(f => { try { cfis.Add(new FileInfo(f)); } catch (Exception) { } }); foreach (var fi in cfis) { yield return(fi); } } } if ((!returnOpt.HasFlag(ReturnOptions.ReturnFiles) || cdiFiles != null) && (returnOpt.HasFlag(ReturnOptions.ReturnDirectories) || searchOpt.HasFlag(SearchOption.AllDirectories))) // skip if file enumeration failed { IEnumerable <string> cdiDirs = null; try { cdiDirs = Directory.EnumerateDirectories(cdi.FullName, dirPattern, SearchOption.TopDirectoryOnly); } catch (Exception) { } if (cdiDirs != null) { var cdis = new ConcurrentBag <DirectoryInfo>(); cdiDirs.AsParallel() .ForAll(d => { try { cdis.Add(new DirectoryInfo(d)); } catch (Exception) { } }); foreach (var rdi in cdis) { if (returnOpt.HasFlag(ReturnOptions.ReturnDirectories)) { yield return(rdi); } if (searchOpt == SearchOption.AllDirectories) { searchQueue.Enqueue(rdi); } } } } } }
public static IEnumerable <FileSystemInfo> SafeEnumerateFileSystemInfos(this DirectoryInfo di, string searchPattern, SearchOption searchOpt = SearchOption.TopDirectoryOnly, ReturnOptions returnOpt = ReturnOptions.ReturnBoth) => di.SafeEnumerateFileSystemInfos(searchPattern, searchPattern, searchOpt, returnOpt);
public static IEnumerable <FileSystemInfo> SafeEnumerateFileSystemInfos(this string path, string filePattern, string dirPattern, SearchOption searchOpt = SearchOption.TopDirectoryOnly, ReturnOptions returnOpt = ReturnOptions.ReturnBoth) => new DirectoryInfo(path).SafeEnumerateFileSystemInfos(filePattern, dirPattern, searchOpt, returnOpt);
/// <summary> /// Get the WwiseObjectInfo for the project. /// </summary> /// <param name="callback">Function accepting a list of WwiseObjectInfo. The first element of the list will be the project info.</param> /// <param name="options">Specifies which object properties to include in the response</param> public static void GetProject <T>(GetResultListDelegate <T> callback, ReturnOptions options) { var args = new WaqlArgs($"from type {WaapiKeywords.PROJECT}"); QueueCommandWithReturnWwiseObjects(args, options, callback); }
/// <summary> /// Enqueues a waapi comand to fetch the specified object and all of its descendants in the heirarchy to a specified depth. /// Passes the list of WwiseObjectInfo containing the specified object and descendants to the callback. /// </summary> /// <param name="guid">GUID of the target object.</param> /// <param name="options">Specifies which object properties to include in the response</param> /// <param name="depth"> Depth of descendants to fetch. If -1, fetches all descendants.</param> /// <param name="callback">Function accepting a list of WwiseObjectInfo.</param> public static void GetWwiseObjectAndDescendants <T>(System.Guid guid, ReturnOptions options, int depth, GetResultListDelegate <T> callback) { GetWwiseObjectAndDescendants(guid.ToString("B"), options, depth, callback); }
/// <summary> /// Enqueues a waapi command to fetch the specified object and all of its ancestors in the heirarchy. /// Passes the list of WwiseObjectInfo containing the specified object and ancestors to the callback. /// </summary> /// <param name="guid">GUID of the target object.</param> /// <param name="options">Specifies which object properties to include in the response</param> /// <param name="callback">Function accepting a list of WwiseObjectInfo.</param> public static void GetWwiseObjectAndAncestors <T>(System.Guid guid, ReturnOptions options, GetResultListDelegate <T> callback) { var args = new WaqlArgs($"from object \"{guid:B}\" select this, ancestors orderby path"); QueueCommandWithReturnWwiseObjects(args, options, callback); }