A game about forced loneliness, made by TACStudios
at master 48 lines 1.5 kB view raw
1using System; 2using UnityEditor.U2D.Common.Path.GUIFramework; 3using UnityEngine; 4 5namespace UnityEditor.U2D.Common.Path 6{ 7 internal class CreatePointAction : ClickAction 8 { 9 private Control m_PointControl; 10 11 public Func<IGUIState, Vector2, Vector3> guiToWorld; 12 public Action<int, Vector3> onCreatePoint; 13 public CreatePointAction(Control pointControl, Control edgeControl) : base(edgeControl, 0, false) 14 { 15 m_PointControl = pointControl; 16 } 17 18 protected override void OnTrigger(IGUIState guiState) 19 { 20 base.OnTrigger(guiState); 21 22 var index = hoveredControl.layoutData.index; 23 var position = GetMousePositionWorld(guiState); 24 25 if (onCreatePoint != null) 26 onCreatePoint(index, position); 27 28 guiState.nearestControl = m_PointControl.ID; 29 30 var data = m_PointControl.layoutData; 31 data.index = index + 1; 32 data.position = position; 33 data.distance = 0f; 34 35 m_PointControl.layoutData = data; 36 37 guiState.changed = true; 38 } 39 40 private Vector3 GetMousePositionWorld(IGUIState guiState) 41 { 42 if (guiToWorld != null) 43 return guiToWorld(guiState, guiState.mousePosition); 44 45 return guiState.GUIToWorld(guiState.mousePosition, hoveredControl.layoutData.forward, hoveredControl.layoutData.position); 46 } 47 } 48}