mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-03-10 07:44:57 +08:00
fix: minor issues with scale adjuster (#679)
* fix: undo operations can cause scale adjuster to perma-disable meshes * fix: tool is left hidden after scale adjuster is deleted
This commit is contained in:
parent
6eab55ae26
commit
d57e211d0b
@ -127,10 +127,30 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
private static Vector3 _gizmoScale;
|
||||
private static Quaternion _handleRotation;
|
||||
|
||||
private static bool _toolHidden;
|
||||
|
||||
private static bool ToolHidden
|
||||
{
|
||||
get => _toolHidden;
|
||||
set
|
||||
{
|
||||
if (_toolHidden && !value)
|
||||
{
|
||||
Tools.hidden = false;
|
||||
} else if (value)
|
||||
{
|
||||
Tools.hidden = true;
|
||||
}
|
||||
|
||||
_toolHidden = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void OnSelectionChanged()
|
||||
{
|
||||
_selection.Clear();
|
||||
Tools.hidden = false;
|
||||
ToolHidden = false;
|
||||
_active = null;
|
||||
}
|
||||
|
||||
@ -140,7 +160,7 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
{
|
||||
if (_active == true)
|
||||
{
|
||||
Tools.hidden = false;
|
||||
ToolHidden = false;
|
||||
_active = null;
|
||||
}
|
||||
|
||||
@ -149,10 +169,12 @@ namespace nadena.dev.modular_avatar.core.editor
|
||||
|
||||
if (ShouldEnable())
|
||||
{
|
||||
Tools.hidden = true;
|
||||
ToolHidden = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
ToolHidden = false;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -15,7 +15,7 @@ namespace nadena.dev.modular_avatar.core
|
||||
[RequireComponent(typeof(SkinnedMeshRenderer))]
|
||||
internal class ScaleAdjusterRenderer : MonoBehaviour, IEditorOnly
|
||||
{
|
||||
private static event Action OnPreInspector;
|
||||
private static event Action OnClearAllOverrides;
|
||||
private static int RecreateHierarchyIndexCount = 0;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
@ -72,9 +72,10 @@ namespace nadena.dev.modular_avatar.core
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
ClearOverrides();
|
||||
ClearAllOverrides();
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
private void Update()
|
||||
{
|
||||
if (myRenderer == null)
|
||||
@ -124,7 +125,7 @@ namespace nadena.dev.modular_avatar.core
|
||||
myRenderer.SetBlendShapeWeight(i, parentRenderer.GetBlendShapeWeight(i));
|
||||
}
|
||||
|
||||
ClearOverrides();
|
||||
ClearAllOverrides();
|
||||
|
||||
myRenderer.enabled = parentRenderer.enabled;
|
||||
}
|
||||
@ -136,7 +137,7 @@ namespace nadena.dev.modular_avatar.core
|
||||
return;
|
||||
}
|
||||
|
||||
ClearOverrides();
|
||||
ClearAllOverrides();
|
||||
|
||||
if (!parentRenderer.enabled || !parentRenderer.gameObject.activeInHierarchy)
|
||||
{
|
||||
@ -145,23 +146,25 @@ namespace nadena.dev.modular_avatar.core
|
||||
|
||||
parentRenderer.enabled = false;
|
||||
wasActive = true;
|
||||
OnPreInspector += ClearOverrides;
|
||||
var objName = parentRenderer.gameObject.name;
|
||||
OnClearAllOverrides += ClearLocalOverride;
|
||||
// Sometimes - e.g. around domain reloads or undo operations - the parent renderer's enabled field might get
|
||||
// re-disabled; re-enabler it in delayCall in this case.
|
||||
UnityEditor.EditorApplication.delayCall += ClearLocalOverride;
|
||||
}
|
||||
#endif
|
||||
|
||||
private void ClearLocalOverride()
|
||||
{
|
||||
if (parentRenderer != null)
|
||||
{
|
||||
parentRenderer.enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPostRender()
|
||||
{
|
||||
ClearOverrides();
|
||||
}
|
||||
|
||||
private void ClearOverrides()
|
||||
{
|
||||
if (this == null) return;
|
||||
|
||||
if (wasActive && parentRenderer != null)
|
||||
{
|
||||
parentRenderer.enabled = true;
|
||||
wasActive = false;
|
||||
}
|
||||
ClearAllOverrides();
|
||||
}
|
||||
|
||||
public void ClearBoneCache()
|
||||
@ -171,8 +174,8 @@ namespace nadena.dev.modular_avatar.core
|
||||
|
||||
internal static void ClearAllOverrides()
|
||||
{
|
||||
OnPreInspector?.Invoke();
|
||||
OnPreInspector = null;
|
||||
OnClearAllOverrides?.Invoke();
|
||||
OnClearAllOverrides = null;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user