Timeline's Note And Sth Submodule

This commit is contained in:
2025-03-16 00:42:27 +08:00
parent 7395319dfe
commit 41d944c9e1
15 changed files with 1000 additions and 94 deletions

View File

@@ -110,8 +110,10 @@ namespace Ichni.Editor
{
public TimelineTab timelineTabPrefab;
public Dictionary<Type, TimelineTab> timelineTabList = new Dictionary<Type, TimelineTab>();
private int TabIndex = 0;
public void SetTimeLine(GameElement element)//暂时好了(别的类型什么的传时间就好了)
{
TabIndex = 0;
for (int i = timePointerModule.moveTabPoint.childCount - 1; i >= 0; i--)
{
var transform = timePointerModule.moveTabPoint.transform.GetChild(i);
@@ -123,35 +125,64 @@ namespace Ichni.Editor
timelineTabList.Remove(timelineTabList.ElementAt(i).Key);
}
Notefind(element);
Elementfind(element);
}
public RectTransform moveTabPoint;
public void Notefind(GameElement Track)
{//这也是if山
foreach (var i in Track.childElementList)
public void Elementfind(GameElement element)//在其中添加东西时timelineTab也要写难受
{
if (element.submoduleList.Any(w => w is TimeDurationSubmodule))
{
TimeDurationSubmodule sub = (TimeDurationSubmodule)element.submoduleList.Find(w => w is TimeDurationSubmodule);
if (sub.isOverridingDuration) Add(sub);
}
if (element is NoteBase)
{
if (!timelineTabList.ContainsKey(element.GetType()))
{
Add(element);
}
else
{
timelineTabList[element.GetType()].AddElement(element);
}
}
else if (element is Track track && track.submoduleList.Any(w => w is TrackTimeSubmodule))
{
TrackTimeSubmodule sub = (TrackTimeSubmodule)track.submoduleList.Find(w => w is TrackTimeSubmodule);
Add(sub);
}
foreach (var i in element.childElementList)
{
if (i is NoteBase)
{
if (!timelineTabList.ContainsKey(i.GetType()))
{
TimelineTab timelineTab = Instantiate(timelineTabPrefab, timelineTabRect.transform);
//timelineTab.timeline = this;
//timelineTab.MoveArea = timePointerModule.timePointerArea;
timelineTab.MoveArea = moveTabPoint;
timelineTab.SetTab(i, i.GetType());
timelineTabList.Add(i.GetType(), timelineTab);
Add(i);
}
else
{
timelineTabList[i.GetType()].AddElement(i);
}
}
}
}
private void Add(IBaseElement obj)
{
TimelineTab timelineTab = Instantiate(timelineTabPrefab, timelineTabRect.transform);
timelineTab.MoveArea = moveTabPoint;
timelineTab.TabIndex = TabIndex;
timelineTab.SetTab(obj, obj.GetType());
timelineTabList.Add(obj.GetType(), timelineTab);
TabIndex++;
}
}
}