/
ReorderableArray.cs
110 lines (70 loc) · 1.6 KB
/
ReorderableArray.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Malee.List {
[Serializable]
public abstract class ReorderableArray<T> : ICloneable, IList<T>, ICollection<T>, IEnumerable<T> {
[SerializeField]
private List<T> array = new List<T>();
public ReorderableArray()
: this(0) {
}
public ReorderableArray(int length) {
array = new List<T>(length);
}
public T this[int index] {
get { return array[index]; }
set { array[index] = value; }
}
public int Length {
get { return array.Count; }
}
public bool IsReadOnly {
get { return false; }
}
public int Count {
get { return array.Count; }
}
public object Clone() {
return new List<T>(array);
}
public void CopyFrom(IEnumerable<T> value) {
array.Clear();
array.AddRange(value);
}
public bool Contains(T value) {
return array.Contains(value);
}
public int IndexOf(T value) {
return array.IndexOf(value);
}
public void Insert(int index, T item) {
array.Insert(index, item);
}
public void RemoveAt(int index) {
array.RemoveAt(index);
}
public void Add(T item) {
array.Add(item);
}
public void Clear() {
array.Clear();
}
public void CopyTo(T[] array, int arrayIndex) {
this.array.CopyTo(array, arrayIndex);
}
public bool Remove(T item) {
return array.Remove(item);
}
public T[] ToArray() {
return array.ToArray();
}
public IEnumerator<T> GetEnumerator() {
return array.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator() {
return array.GetEnumerator();
}
}
}