mirror of
https://github.com/bdunderscore/modular-avatar.git
synced 2025-03-10 15:54:56 +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 Vector3 _gizmoScale;
|
||||||
private static Quaternion _handleRotation;
|
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()
|
private static void OnSelectionChanged()
|
||||||
{
|
{
|
||||||
_selection.Clear();
|
_selection.Clear();
|
||||||
Tools.hidden = false;
|
ToolHidden = false;
|
||||||
_active = null;
|
_active = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -140,7 +160,7 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
{
|
{
|
||||||
if (_active == true)
|
if (_active == true)
|
||||||
{
|
{
|
||||||
Tools.hidden = false;
|
ToolHidden = false;
|
||||||
_active = null;
|
_active = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,10 +169,12 @@ namespace nadena.dev.modular_avatar.core.editor
|
|||||||
|
|
||||||
if (ShouldEnable())
|
if (ShouldEnable())
|
||||||
{
|
{
|
||||||
Tools.hidden = true;
|
ToolHidden = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
ToolHidden = false;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ namespace nadena.dev.modular_avatar.core
|
|||||||
[RequireComponent(typeof(SkinnedMeshRenderer))]
|
[RequireComponent(typeof(SkinnedMeshRenderer))]
|
||||||
internal class ScaleAdjusterRenderer : MonoBehaviour, IEditorOnly
|
internal class ScaleAdjusterRenderer : MonoBehaviour, IEditorOnly
|
||||||
{
|
{
|
||||||
private static event Action OnPreInspector;
|
private static event Action OnClearAllOverrides;
|
||||||
private static int RecreateHierarchyIndexCount = 0;
|
private static int RecreateHierarchyIndexCount = 0;
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
@ -72,9 +72,10 @@ namespace nadena.dev.modular_avatar.core
|
|||||||
|
|
||||||
private void OnDestroy()
|
private void OnDestroy()
|
||||||
{
|
{
|
||||||
ClearOverrides();
|
ClearAllOverrides();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
if (myRenderer == null)
|
if (myRenderer == null)
|
||||||
@ -124,7 +125,7 @@ namespace nadena.dev.modular_avatar.core
|
|||||||
myRenderer.SetBlendShapeWeight(i, parentRenderer.GetBlendShapeWeight(i));
|
myRenderer.SetBlendShapeWeight(i, parentRenderer.GetBlendShapeWeight(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
ClearOverrides();
|
ClearAllOverrides();
|
||||||
|
|
||||||
myRenderer.enabled = parentRenderer.enabled;
|
myRenderer.enabled = parentRenderer.enabled;
|
||||||
}
|
}
|
||||||
@ -136,7 +137,7 @@ namespace nadena.dev.modular_avatar.core
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ClearOverrides();
|
ClearAllOverrides();
|
||||||
|
|
||||||
if (!parentRenderer.enabled || !parentRenderer.gameObject.activeInHierarchy)
|
if (!parentRenderer.enabled || !parentRenderer.gameObject.activeInHierarchy)
|
||||||
{
|
{
|
||||||
@ -145,23 +146,25 @@ namespace nadena.dev.modular_avatar.core
|
|||||||
|
|
||||||
parentRenderer.enabled = false;
|
parentRenderer.enabled = false;
|
||||||
wasActive = true;
|
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()
|
private void OnPostRender()
|
||||||
{
|
{
|
||||||
ClearOverrides();
|
ClearAllOverrides();
|
||||||
}
|
|
||||||
|
|
||||||
private void ClearOverrides()
|
|
||||||
{
|
|
||||||
if (this == null) return;
|
|
||||||
|
|
||||||
if (wasActive && parentRenderer != null)
|
|
||||||
{
|
|
||||||
parentRenderer.enabled = true;
|
|
||||||
wasActive = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ClearBoneCache()
|
public void ClearBoneCache()
|
||||||
@ -171,8 +174,8 @@ namespace nadena.dev.modular_avatar.core
|
|||||||
|
|
||||||
internal static void ClearAllOverrides()
|
internal static void ClearAllOverrides()
|
||||||
{
|
{
|
||||||
OnPreInspector?.Invoke();
|
OnClearAllOverrides?.Invoke();
|
||||||
OnPreInspector = null;
|
OnClearAllOverrides = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user