Unity-WebSocket/Assets/FishNet/Runtime/Editor/ForceInstallPreventor.cs
2025-06-28 11:28:54 +03:30

57 lines
1.9 KiB
C#

#if UNITY_EDITOR
using System;
using System.IO;
using UnityEditor;
using UnityEngine;
namespace FishNet.Editing
{
/* When you import playeveryware's EOS asset, it force installs NGO, which creates
* a lot of issues for anyone not using NGO. This script will block the force installation. */
public class ForceInstallPreventor : AssetPostprocessor
{
private static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
{
// No need to continue if nothing was imported.
if (importedAssets == null || importedAssets.Length == 0)
return;
EditorApplication.LockReloadAssemblies();
foreach (string path in importedAssets)
CheckTargetPath(path);
/* We don't have a way to know if the user intentionally
* had domain locked so we just have to unlock it and hope
* we aren't messing up users settings.
*
* Worse case scenario this will only happen when the forceware
* is removed.
*
* There is a 'didDomainReload' boolean override for this
* method, but it does not seem to reflect the information
* we need.
* */
EditorApplication.UnlockReloadAssemblies();
}
private void OnPreprocessAsset()
{
CheckTargetPath(assetImporter.assetPath);
}
private static void CheckTargetPath(string path)
{
if (!path.Contains("PackageInstallHelper_Netcode", StringComparison.CurrentCultureIgnoreCase))
return;
try
{
File.Delete(path);
Debug.Log($"Fish-Networking prevented PlayEveryWare from forcefully installing Netcode for GameObjects.");
}
finally { }
}
}
}
#endif