pixelgon/Assets/Scripts/Tools/ToolEraser.cs
2021-01-21 00:09:06 -08:00

80 lines
1.8 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class ToolEraser
{
[HideInInspector]
public Vector3 cursorPos;
[HideInInspector]
public List<int> selected = new List<int>();
public void Reset()
{
// for resetting the tool (when swapping around, initializing, etc)
selected.Clear();
}
public void Frame(Input input, Pixelgon pixelgon)
{
Vector3 rawCursorPos = cursorPos = input.dragCursor;
if (input.mainCon.trigger.held)
{
selected.Clear();
int length = 0;
for (int i = 0; i < pixelgon.vectors.Count; i++)
{
if (pixelgon.vectors[i] == Vector3.zero)
{
length = 0;
}
else
{
if (length > 0)
{
Vector3 edgeSnapPos = StaticMethods.EdgeSnap(pixelgon.vectors[i - 1], pixelgon.vectors[i], rawCursorPos);
if (Vector3.Distance(rawCursorPos, edgeSnapPos) < 0.015f)
{
cursorPos = edgeSnapPos;
if (cursorPos == pixelgon.vectors[i - 1])
{
selected.Add(i - 1);
break;
}
if (cursorPos == pixelgon.vectors[i])
{
selected.Add(i);
break;
}
selected.Add(i - 1);
selected.Add(i);
break;
}
}
length++;
}
}
}
if (selected.Count > 0 && input.mainCon.one.down)
{
if (selected.Count == 1)
{
pixelgon.vectors.RemoveAt(selected[0]);
}
else
{
pixelgon.vectors.Insert(selected[1], Vector3.zero);
}
pixelgon.vectors = StaticMethods.DeleteLoose(pixelgon.vectors);
Reset();
}
}
}