A game about forced loneliness, made by TACStudios
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}