123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- using System;
- using System.Collections.Generic;
- using UnityEngine;
-
- namespace UnityEditor.U2D.Common.Path
- {
- internal class GenericScriptablePath<T> : ScriptablePath
- {
- [SerializeField]
- private List<T> m_Data = new List<T>();
-
- public T[] data
- {
- get { return m_Data.ToArray(); }
- set
- {
- if (value.Length != pointCount)
- throw new Exception("Custom data count does not match control point count");
-
- m_Data.Clear();
- m_Data.AddRange(value);
- }
- }
-
- public override void Clear()
- {
- base.Clear();
-
- m_Data.Clear();
- }
-
- public override void AddPoint(ControlPoint controlPoint)
- {
- base.AddPoint(controlPoint);
-
- m_Data.Add(Create());
- }
-
- public override void InsertPoint(int index, ControlPoint controlPoint)
- {
- base.InsertPoint(index, controlPoint);
-
- m_Data.Insert(index, Create());
- }
-
- public override void RemovePoint(int index)
- {
- base.RemovePoint(index);
-
- Destroy(m_Data[index]);
-
- m_Data.RemoveAt(index);
- }
-
- public T GetData(int index)
- {
- return m_Data[index];
- }
-
- public void SetData(int index, T data)
- {
- m_Data[index] = data;
- }
-
- protected virtual T Create()
- {
- return Activator.CreateInstance<T>();
- }
-
- protected virtual void Destroy(T data) { }
- }
- }
|