chunk 1: core gameplay scripts scenes runtime assets
This commit is contained in:
86
Assets/Editor/AppUIActivityVibratorPatch.cs
Normal file
86
Assets/Editor/AppUIActivityVibratorPatch.cs
Normal file
@@ -0,0 +1,86 @@
|
||||
#if UNITY_EDITOR
|
||||
using System;
|
||||
using System.IO;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DeviantMobile.Editor.Android
|
||||
{
|
||||
[InitializeOnLoad]
|
||||
internal static class AppUIActivityVibratorPatch
|
||||
{
|
||||
private const string PackageName = "com.unity.dt.app-ui";
|
||||
private const string RelativeJavaPath = "Runtime/Core/Platform/Android/Plugins/Android/AppUIActivity.java";
|
||||
private const string PackageAssetPath = "Packages/" + PackageName + "/" + RelativeJavaPath;
|
||||
|
||||
static AppUIActivityVibratorPatch()
|
||||
{
|
||||
EditorApplication.update += ApplyOnceWhenEditorReady;
|
||||
}
|
||||
|
||||
private static void ApplyOnceWhenEditorReady()
|
||||
{
|
||||
EditorApplication.update -= ApplyOnceWhenEditorReady;
|
||||
TryApplyPatch();
|
||||
}
|
||||
|
||||
[MenuItem("Tools/Android/App UI/Reapply Vibrator Compatibility Patch")]
|
||||
private static void ReapplyPatchFromMenu()
|
||||
{
|
||||
if (TryApplyPatch(force: true))
|
||||
{
|
||||
Debug.Log("Reapplied App UI vibrator compatibility patch.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("App UI vibrator compatibility patch could not be applied. See console for details.");
|
||||
}
|
||||
}
|
||||
|
||||
private static bool TryApplyPatch(bool force = false)
|
||||
{
|
||||
try
|
||||
{
|
||||
var packageInfo = UnityEditor.PackageManager.PackageInfo.FindForAssetPath("Packages/" + PackageName);
|
||||
if (packageInfo == null)
|
||||
{
|
||||
Debug.LogWarning($"Package '{PackageName}' could not be located. Skipping App UI vibrator patch.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var javaFilePath = Path.Combine(packageInfo.resolvedPath, RelativeJavaPath);
|
||||
if (!File.Exists(javaFilePath))
|
||||
{
|
||||
Debug.LogWarning($"AppUIActivity.java not found at '{javaFilePath}'.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var currentSource = File.ReadAllText(javaFilePath);
|
||||
if (!force && currentSource.Contains("Unable to access VibratorManager"))
|
||||
{
|
||||
return true; // already patched
|
||||
}
|
||||
|
||||
var templatePath = Path.Combine(Application.dataPath, "Editor/AndroidTemplates/AppUIActivity.java.txt");
|
||||
if (!File.Exists(templatePath))
|
||||
{
|
||||
Debug.LogWarning($"Template Java source missing at '{templatePath}'.");
|
||||
return false;
|
||||
}
|
||||
|
||||
var patchedSource = File.ReadAllText(templatePath);
|
||||
File.WriteAllText(javaFilePath, patchedSource);
|
||||
|
||||
AssetDatabase.ImportAsset(PackageAssetPath);
|
||||
Debug.Log("Applied App UI vibrator compatibility patch.");
|
||||
return true;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Debug.LogException(exception);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user