mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-02-01 19:22:55 +08:00
41 lines
1.2 KiB
C#
41 lines
1.2 KiB
C#
|
using System;
|
|||
|
|
|||
|
namespace nadena.dev.modular_avatar.core.armature_lock
|
|||
|
{
|
|||
|
internal abstract class ArmatureLock : IDisposable
|
|||
|
{
|
|||
|
private bool _enableAssemblyReloadCallback;
|
|||
|
|
|||
|
protected bool EnableAssemblyReloadCallback
|
|||
|
{
|
|||
|
get => _enableAssemblyReloadCallback;
|
|||
|
set
|
|||
|
{
|
|||
|
if (_enableAssemblyReloadCallback == value) return;
|
|||
|
_enableAssemblyReloadCallback = value;
|
|||
|
#if UNITY_EDITOR
|
|||
|
if (value)
|
|||
|
{
|
|||
|
UnityEditor.AssemblyReloadEvents.beforeAssemblyReload += OnDomainUnload;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
UnityEditor.AssemblyReloadEvents.beforeAssemblyReload -= OnDomainUnload;
|
|||
|
}
|
|||
|
#endif
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public abstract void Prepare();
|
|||
|
public abstract LockResult Execute();
|
|||
|
public abstract bool IsStable();
|
|||
|
public abstract void Dispose();
|
|||
|
|
|||
|
private void OnDomainUnload()
|
|||
|
{
|
|||
|
// Unity 2019 does not call deferred callbacks before domain unload completes,
|
|||
|
// so we need to make sure to immediately destroy all our TransformAccessArrays.
|
|||
|
DeferDestroy.DestroyImmediate(this);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|