submodule bug fix & Clip extend

移除submodule重复引用的问题,
Clip现在可以保存任意GameElement,且任意指定物体作为父物体加载
This commit is contained in:
SoulliesOfficial
2025-03-02 02:18:28 -05:00
parent 5d775ae687
commit 188cfba84a
39 changed files with 1276 additions and 193 deletions

View File

@@ -18,7 +18,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
submoduleList.Add(timeDurationSubmodule);
}
/// <summary>

View File

@@ -38,7 +38,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
submoduleList.Add(timeDurationSubmodule);
}
protected override void UpdateAnimation(float songTime)

View File

@@ -38,7 +38,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
submoduleList.Add(timeDurationSubmodule);
}
protected override void UpdateAnimation(float songTime)

View File

@@ -33,7 +33,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
submoduleList.Add(timeDurationSubmodule);
}
protected override void UpdateAnimation(float songTime)

View File

@@ -41,7 +41,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
submoduleList.Add(timeDurationSubmodule);
}
protected override void UpdateAnimation(float songTime)

View File

@@ -36,7 +36,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
submoduleList.Add(timeDurationSubmodule);
}
protected override void UpdateAnimation(float songTime)

View File

@@ -38,7 +38,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
submoduleList.Add(timeDurationSubmodule);
}
protected override void UpdateAnimation(float songTime)

View File

@@ -55,6 +55,8 @@ namespace Ichni.RhythmGame
this.baseColorDirtyMark = false;
this.emissionColorDirtyMark = false;
(attachedGameElement as IHaveColorSubmodule).colorSubmodule = this;
}
public ColorSubmodule(GameElement attachedGameElement, Color originalBaseColor, bool emissionEnabled,
@@ -71,6 +73,8 @@ namespace Ichni.RhythmGame
this.baseColorDirtyMark = false;
this.emissionColorDirtyMark = false;
(attachedGameElement as IHaveColorSubmodule).colorSubmodule = this;
}
public override void SaveBM()

View File

@@ -34,6 +34,8 @@ namespace Ichni.RhythmGame
effectCollection.Add("Bad", new List<EffectBase>());
effectCollection.Add("Miss", new List<EffectBase>());
}
(attachedGameElement as IHaveEffectSubmodule).effectSubmodule = this;
}
public EffectSubmodule(GameElement attachedGameElement, Dictionary<string, List<EffectBase_BM>> effectList_BM) : base(attachedGameElement)
@@ -49,6 +51,8 @@ namespace Ichni.RhythmGame
}
effectCollection.Add(effect.Key, effectList);
}
(attachedGameElement as IHaveEffectSubmodule).effectSubmodule = this;
}
}

View File

@@ -18,7 +18,8 @@ namespace Ichni.RhythmGame
isOverridingDuration = false;
startTime = -32767;//TODO: 换为-delay
endTime = 32767;//TODO: 换为songLength
(attachedGameElement as IHaveTimeDurationSubmodule).timeDurationSubmodule = this;
}
public TimeDurationSubmodule(GameElement attachedGameElement, bool isOverridingDuration, float startTime, float endTime) : base(attachedGameElement)
@@ -26,6 +27,8 @@ namespace Ichni.RhythmGame
this.isOverridingDuration = isOverridingDuration;
this.startTime = startTime;
this.endTime = endTime;
(attachedGameElement as IHaveTimeDurationSubmodule).timeDurationSubmodule = this;
}
public bool CheckTimeInDuration(float time, float offset = 0.2f)

View File

@@ -25,9 +25,6 @@ namespace Ichni.RhythmGame
{
transformSubmodule = new TransformSubmodule(this);
timeDurationSubmodule = new TimeDurationSubmodule(this);
submoduleList.Add(transformSubmodule);
submoduleList.Add(timeDurationSubmodule);
}
}

View File

@@ -60,7 +60,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
transformSubmodule = new TransformSubmodule(this);
submoduleList.Add(transformSubmodule);
}
}

View File

@@ -26,7 +26,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
effectSubmodule = new EffectSubmodule(this);
submoduleList.Add(effectSubmodule);
}
private void Update()

View File

@@ -58,9 +58,6 @@ namespace Ichni.RhythmGame
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
noteJudgeSubmodule = new NoteJudgeSubmodule(this);
submoduleList.Add(timeDurationSubmodule);
submoduleList.Add(noteJudgeSubmodule);
}
private void Update()
@@ -135,27 +132,15 @@ namespace Ichni.RhythmGame
}
public override void SetUpInspector()
{
//我想把时间放在第一层菜单所以
base.SetUpInspector();
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
var container = inspector.GenerateContainer("Element Info");
var nameInputField = inspector.GenerateInputField(this, container, GetType().Name + "'s Name", nameof(elementName));
var guidText = inspector.GenerateParameterText(this, container, "Element GUID", nameof(elementGuid));
var tagsListButton = inspector.GenerateButton(this, container, "Tags List", () =>
{
inspector.GenerateCompositeParameterWindow(this, "Tags List", nameof(tags)).SetAsStringList();
});
var container = inspector.GenerateContainer("Note Info");
var exactJudgeTimeInputField =
inspector.GenerateInputField(this, container, "exactJudgeTime", nameof(exactJudgeTime));
exactJudgeTimeInputField.AddListenerFunction(_ => UpdateNoteInTrack());
var noteScreenPositionText = inspector.GenerateHintText(this, container, () => "Note Screen Position: " + noteScreenPosition);
foreach (var submodule in submoduleList)
{
submodule.SetUpInspector();
}
}
}

View File

@@ -20,7 +20,6 @@ namespace Ichni.RhythmGame
{
base.SetDefaultSubmodules();
effectSubmodule = new EffectSubmodule(this, EffectSubmodule.EffectSubmodulePreset.Note);
submoduleList.Add(effectSubmodule);
}
}
}

View File

@@ -46,10 +46,6 @@ namespace Ichni.RhythmGame
transformSubmodule = new TransformSubmodule(this);
timeDurationSubmodule = new TimeDurationSubmodule(this);
colorSubmodule = new ColorSubmodule(this);
submoduleList.Add(transformSubmodule);
submoduleList.Add(timeDurationSubmodule);
submoduleList.Add(colorSubmodule);
}
}

View File

@@ -47,10 +47,6 @@ namespace Ichni.RhythmGame
transformSubmodule = new TransformSubmodule(this);
timeDurationSubmodule = new TimeDurationSubmodule(this);
colorSubmodule = new ColorSubmodule(this);
submoduleList.Add(transformSubmodule);
submoduleList.Add(timeDurationSubmodule);
submoduleList.Add(colorSubmodule);
}

View File

@@ -34,9 +34,6 @@ namespace Ichni.RhythmGame
trackPathSubmodule = null;
trackTimeSubmodule = null;
trackRendererSubmodule = null;
submoduleList.Add(transformSubmodule);
submoduleList.Add(timeDurationSubmodule);
}
private void Update()

View File

@@ -39,7 +39,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
submoduleList.Add(timeDurationSubmodule);
}
private void Update()

View File

@@ -33,7 +33,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
submoduleList.Add(timeDurationSubmodule);
}
public void Update()

View File

@@ -45,7 +45,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
timeDurationSubmodule = new TimeDurationSubmodule(this);
submoduleList.Add(timeDurationSubmodule);
}
public void Update()

View File

@@ -46,7 +46,6 @@ namespace Ichni.RhythmGame
protected override void SetDefaultSubmodules()
{
transformSubmodule = new TransformSubmodule(this);
submoduleList.Add(transformSubmodule);
}
}