Aetheria/Assets/Wwise/Editor/WwiseWindows/AkWwisePicker.cs
Reinier Vens db8c3c7779 Initial Wwise Integration
Created wwise project
Integrated inventory UI sounds
Improved projectile weapon behavior (randomized start position, stopped them from self-destructing at target range when airburst is disabled)
2021-02-27 20:53:36 +00:00

91 lines
3.5 KiB
C#

#if UNITY_EDITOR
//////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2014 Audiokinetic Inc. / All Rights Reserved
//
//////////////////////////////////////////////////////////////////////
public class AkWwisePicker : UnityEditor.EditorWindow
{
public static AkWwiseTreeView treeView = new AkWwiseTreeView();
[UnityEditor.MenuItem("Window/Wwise Picker", false, (int) AkWwiseWindowOrder.WwisePicker)]
public static void init()
{
GetWindow<AkWwisePicker>("Wwise Picker", true,
typeof(UnityEditor.EditorWindow).Assembly.GetType("UnityEditor.ConsoleWindow"));
}
public void OnEnable()
{
PopulateTreeview();
}
public void OnGUI()
{
using (new UnityEngine.GUILayout.HorizontalScope("box"))
{
AkWwiseProjectInfo.GetData().autoPopulateEnabled =
UnityEngine.GUILayout.Toggle(AkWwiseProjectInfo.GetData().autoPopulateEnabled, "Auto populate");
if (AkWwiseProjectInfo.GetData().autoPopulateEnabled && AkUtilities.IsWwiseProjectAvailable)
AkWwiseWWUBuilder.StartWWUWatcher();
else
AkWwiseWWUBuilder.StopWWUWatcher();
UnityEngine.GUILayout.FlexibleSpace();
if (UnityEngine.GUILayout.Button("Refresh Project", UnityEngine.GUILayout.Width(200)))
{
treeView.SaveExpansionStatus();
if (AkWwiseProjectInfo.Populate())
PopulateTreeview();
}
if (UnityEngine.GUILayout.Button("Generate SoundBanks", UnityEngine.GUILayout.Width(200)))
{
if (AkUtilities.IsSoundbankGenerationAvailable())
{
AkUtilities.GenerateSoundbanks();
}
else
{
UnityEngine.Debug.LogError("Access to Wwise is required to generate the SoundBanks. Please go to Edit > Project Settings... and set the Wwise Application Path found in the Wwise Editor view.");
}
}
}
UnityEngine.GUILayout.Space(UnityEditor.EditorGUIUtility.standardVerticalSpacing);
treeView.DisplayTreeView(AK.Wwise.TreeView.TreeViewControl.DisplayTypes.USE_SCROLL_VIEW);
if (UnityEngine.GUI.changed && AkUtilities.IsWwiseProjectAvailable)
UnityEditor.EditorUtility.SetDirty(AkWwiseProjectInfo.GetData());
}
public static void PopulateTreeview()
{
treeView.AssignDefaults();
treeView.SetRootItem(System.IO.Path.GetFileNameWithoutExtension(AkWwiseEditorSettings.Instance.WwiseProjectPath), WwiseObjectType.Project);
treeView.PopulateItem(treeView.RootItem, "Events", AkWwiseProjectInfo.GetData().EventWwu);
treeView.PopulateItem(treeView.RootItem, "Switches", AkWwiseProjectInfo.GetData().SwitchWwu);
treeView.PopulateItem(treeView.RootItem, "States", AkWwiseProjectInfo.GetData().StateWwu);
treeView.PopulateItem(treeView.RootItem, "SoundBanks", AkWwiseProjectInfo.GetData().BankWwu);
treeView.PopulateItem(treeView.RootItem, "Auxiliary Busses", AkWwiseProjectInfo.GetData().AuxBusWwu);
//treeView.PopulateItem(treeView.RootItem, "Game Parameters", AkWwiseProjectInfo.GetData().RtpcWwu);
//treeView.PopulateItem(treeView.RootItem, "Triggers", AkWwiseProjectInfo.GetData().TriggerWwu);
treeView.PopulateItem(treeView.RootItem, "Virtual Acoustics", AkWwiseProjectInfo.GetData().AcousticTextureWwu);
}
public class Postprocessor : UnityEditor.AssetPostprocessor
{
//This function will be called before script compilation and will save the picker's expantion
private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets,
string[] movedFromAssetPaths)
{
if (UnityEditor.EditorApplication.isPlayingOrWillChangePlaymode || UnityEditor.EditorApplication.isCompiling)
return;
treeView.SaveExpansionStatus();
}
}
}
#endif