Rasagar/Library/PackageCache/com.unity.terrain-tools/Editor/TerrainTools/BrushControllers/DefaultBrushModifierKeys.cs
2024-08-26 23:07:20 +03:00

74 lines
2.5 KiB
C#

using System;
namespace UnityEditor.TerrainTools
{
internal class DefaultBrushModifierKeys : IBrushModifierKeyController
{
public event Action<BrushModifierKey> OnModifierPressed;
public event Action<BrushModifierKey> OnModifierReleased;
private static readonly BrushShortcutHandler<BrushModifierKey> s_ShortcutHandler = new BrushShortcutHandler<BrushModifierKey>();
private void HandleModifier1Pressed()
{
OnModifierPressed?.Invoke(BrushModifierKey.BRUSH_MOD_1);
}
private void HandleModifier1Released()
{
OnModifierReleased?.Invoke(BrushModifierKey.BRUSH_MOD_1);
}
private void HandleModifier2Pressed()
{
OnModifierPressed?.Invoke(BrushModifierKey.BRUSH_MOD_2);
}
private void HandleModifier2Released()
{
OnModifierReleased?.Invoke(BrushModifierKey.BRUSH_MOD_2);
}
private void HandleModifier3Pressed()
{
OnModifierPressed?.Invoke(BrushModifierKey.BRUSH_MOD_3);
}
private void HandleModifier3Released()
{
OnModifierReleased?.Invoke(BrushModifierKey.BRUSH_MOD_3);
}
private void HandleInvertStrengthPressed()
{
OnModifierPressed?.Invoke(BrushModifierKey.BRUSH_MOD_INVERT);
}
private void HandleInvertStrengthReleased()
{
OnModifierReleased?.Invoke(BrushModifierKey.BRUSH_MOD_INVERT);
}
public void OnEnterToolMode()
{
s_ShortcutHandler.AddActions(BrushModifierKey.BRUSH_MOD_1, HandleModifier1Pressed, HandleModifier1Released);
s_ShortcutHandler.AddActions(BrushModifierKey.BRUSH_MOD_2, HandleModifier2Pressed, HandleModifier2Released);
s_ShortcutHandler.AddActions(BrushModifierKey.BRUSH_MOD_3, HandleModifier3Pressed, HandleModifier3Released);
s_ShortcutHandler.AddActions(BrushModifierKey.BRUSH_MOD_INVERT, HandleInvertStrengthPressed, HandleInvertStrengthReleased);
}
public void OnExitToolMode()
{
s_ShortcutHandler.RemoveActions(BrushModifierKey.BRUSH_MOD_1);
s_ShortcutHandler.RemoveActions(BrushModifierKey.BRUSH_MOD_2);
s_ShortcutHandler.RemoveActions(BrushModifierKey.BRUSH_MOD_3);
s_ShortcutHandler.RemoveActions(BrushModifierKey.BRUSH_MOD_INVERT);
}
public bool ModifierActive(BrushModifierKey k)
{
return s_ShortcutHandler.IsShortcutPressed(k);
}
}
}