VR4RoboticArm2/VR4RoboticArm/Library/PackageCache/com.meta.xr.sdk.audio/editor/MetaXRAcousticBuildPreprocessor.cs
IonutMocanu d7aba243a2 Main
2025-09-08 11:04:02 +03:00

86 lines
3.1 KiB
C#

/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
* All rights reserved.
*
* Licensed under the Oculus SDK License Agreement (the "License");
* you may not use the Oculus SDK except in compliance with the License,
* which is provided at the time of installation or download, or which
* otherwise accompanies this software in either electronic or hard copy form.
*
* You may obtain a copy of the License at
*
* https://developer.oculus.com/licenses/oculussdk/
*
* Unless required by applicable law or agreed to in writing, the Oculus SDK
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/************************************************************************************
* Filename : MetaXRAcousticBuildPreprocessor.cs
* Content : Removes MetaXRAudioUnity binary from builds when using FMOD/Wwise
***********************************************************************************/
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEngine;
static class MetaXRAcousticBuildProcessor
{
class Preprocessor : IPreprocessBuildWithReport
{
readonly string[] runtimePluginNames =
{
"libMetaXRAudioUnity.so",
"MetaXRAudioUnity.dll",
};
public int callbackOrder => 0;
void IPreprocessBuildWithReport.OnPreprocessBuild(BuildReport report)
{
SetRuntimePluginCopyDelegate();
}
void SetRuntimePluginCopyDelegate()
{
var allPlugins = PluginImporter.GetAllImporters();
foreach (var plugin in allPlugins)
{
if (plugin.isNativePlugin)
{
foreach (var pluginName in runtimePluginNames)
{
if (plugin.assetPath.Contains(pluginName))
{
plugin.SetIncludeInBuildDelegate(ShouldIncludeRuntimePluginsInBuild);
break;
}
}
}
}
}
static bool ShouldIncludeRuntimePluginsInBuild(string path)
{
if (path.Contains("MetaXRAudioUnity"))
{
const string AudioManagerAssetPath = "ProjectSettings/AudioManager.asset";
SerializedObject audioManager = new SerializedObject(UnityEditor.AssetDatabase.LoadAllAssetsAtPath(AudioManagerAssetPath)[0]);
SerializedProperty spatializerPluginProperty = audioManager.FindProperty("m_DisableAudio");
bool disableUnityAudio = spatializerPluginProperty.boolValue;
if (disableUnityAudio)
{
Debug.Log("Detected Unity Audio is disabled, excluding MetaXRAudioUnity plugin from build");
}
return !disableUnityAudio;
}
return true;
}
}
}