untangle-puzzlegame/Library/PackageCache/com.unity.2d.common@bb1fc9b3d81b/Editor/InternalBridge/SpriteEditorModuleModeBase.cs
2025-04-17 17:33:08 -04:00

92 lines
3.1 KiB
C#

#if ENABLE_SPRITEMODULE_MODE
using System;
using System.Collections.Generic;
using UnityEditor.U2D.Sprites;
using UnityEngine;
namespace UnityEditor.U2D.Common
{
internal abstract class SpriteEditorModeBase : UnityEditor.U2D.Sprites.SpriteEditorModeBase
{
event Action<Sprites.SpriteEditorModeBase> m_ModeActivateCallback = _ => { };
event Action<SpriteRect> m_SpriteEditorSpriteSelectionChanged = _ => { };
SpriteEditorModuleModeSupportBase m_Module;
public SpriteEditorModuleBase module => m_Module;
public override bool ActivateMode()
{
return false;
}
public override void DeactivateMode()
{ }
public override void OnAddToModule(UnityEditor.U2D.Sprites.SpriteEditorModuleModeSupportBase module)
{
m_Module = module;
spriteEditor.GetMainVisualContainer().RegisterCallback<SpriteSelectionChangeEvent>(OnSpriteEditorSpriteSelectionChanged);
OnAddToModuleInternal(module);
}
protected abstract void OnAddToModuleInternal(SpriteEditorModuleBase module);
public override void OnRemoveFromModule(UnityEditor.U2D.Sprites.SpriteEditorModuleModeSupportBase module)
{
if (m_Module == module)
{
spriteEditor.GetMainVisualContainer().UnregisterCallback<SpriteSelectionChangeEvent>(OnSpriteEditorSpriteSelectionChanged);
OnRemoveFromModuleInternal(module);
m_Module = null;
}
}
void OnSpriteEditorSpriteSelectionChanged(SpriteSelectionChangeEvent evt)
{
m_SpriteEditorSpriteSelectionChanged?.Invoke(spriteEditor.selectedSpriteRect);
}
protected abstract void OnRemoveFromModuleInternal(SpriteEditorModuleBase module);
public override void RegisterOnModeRequestActivate(Action<Sprites.SpriteEditorModeBase> onActivate)
{
m_ModeActivateCallback += onActivate;
}
public override void UnregisterOnModeRequestActivate(Action<Sprites.SpriteEditorModeBase> onActivate)
{
m_ModeActivateCallback -= onActivate;
}
protected void SignalModeActivate(SpriteEditorModeBase mode)
{
m_ModeActivateCallback(mode);
}
public override bool ApplyModeData(bool apply, HashSet<Type> dataProviderTypes)
{
return apply;
}
public void RegisterModuleActivate(Action onActivate)
{
m_Module.RegisterModuleActivate(onActivate);
}
public void UnregisterModuleActivate(Action onActivate)
{
m_Module.UnregisterModuleActivate(onActivate);
}
public void RegisterSpriteEditorSpriteSelectionChanged(Action<SpriteRect> onSpriteRectChanged)
{
m_SpriteEditorSpriteSelectionChanged += onSpriteRectChanged;
}
public void UnregisterSpriteEditorSpriteSelectionChanged(Action<SpriteRect> onSpriteRectChanged)
{
m_SpriteEditorSpriteSelectionChanged -= onSpriteRectChanged;
}
}
}
#endif