Aetheria/Assets/Wwise/Editor/WwiseWindows/AkWwiseProjectInfo.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

90 lines
2.7 KiB
C#

#if UNITY_EDITOR
//////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2014 Audiokinetic Inc. / All Rights Reserved
//
//////////////////////////////////////////////////////////////////////
public static class AkWwiseProjectInfo
{
private const string DataFileName = "AkWwiseProjectData.asset";
private static string WwiseEditorDirectory = System.IO.Path.Combine("Wwise", "Editor");
private static string DataRelativeDirectory = System.IO.Path.Combine(WwiseEditorDirectory, "ProjectData");
private static string DataRelativePath = System.IO.Path.Combine(DataRelativeDirectory, DataFileName);
private static string DataAssetPath = System.IO.Path.Combine("Assets", DataRelativePath);
public static AkWwiseProjectData m_Data;
private static bool WwiseFolderExists()
{
return System.IO.Directory.Exists(System.IO.Path.Combine(UnityEngine.Application.dataPath, "Wwise"));
}
public static AkWwiseProjectData GetData()
{
if (m_Data == null && WwiseFolderExists())
{
try
{
m_Data = UnityEditor.AssetDatabase.LoadAssetAtPath<AkWwiseProjectData>(DataAssetPath);
if (m_Data == null)
{
var dataAbsolutePath = System.IO.Path.Combine(UnityEngine.Application.dataPath, DataRelativePath);
var dataExists = System.IO.File.Exists(dataAbsolutePath);
if (!dataExists)
{
var dataAbsoluteDirectory = System.IO.Path.Combine(UnityEngine.Application.dataPath, DataRelativeDirectory);
if (!System.IO.Directory.Exists(dataAbsoluteDirectory))
System.IO.Directory.CreateDirectory(dataAbsoluteDirectory);
}
m_Data = UnityEngine.ScriptableObject.CreateInstance<AkWwiseProjectData>();
if (dataExists)
UnityEngine.Debug.LogWarning("WwiseUnity: Unable to load asset at <" + dataAbsolutePath + ">.");
else
{
#if UNITY_2019_3_OR_LATER
if (UnityEditor.EditorSettings.assetPipelineMode == UnityEditor.AssetPipelineMode.Version2)
{
UnityEditor.EditorApplication.delayCall += () => UnityEditor.AssetDatabase.CreateAsset(m_Data, DataAssetPath);
}
else
#else
{
UnityEditor.AssetDatabase.CreateAsset(m_Data, DataAssetPath);
}
#endif
}
}
}
catch (System.Exception e)
{
UnityEngine.Debug.LogError("WwiseUnity: Unable to load Wwise Data: " + e);
}
}
return m_Data;
}
public static bool Populate()
{
var bDirty = false;
if (AkUtilities.IsWwiseProjectAvailable)
{
bDirty = AkWwiseWWUBuilder.Populate();
bDirty |= AkWwiseXMLBuilder.Populate();
if (bDirty)
{
UnityEditor.EditorUtility.SetDirty(GetData());
UnityEditor.AssetDatabase.SaveAssets();
UnityEditor.AssetDatabase.Refresh();
}
}
return bDirty;
}
}
#endif