2025-06-03 02:42:28 -04:00
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using Lean.Pool;
|
2025-07-21 05:42:20 -04:00
|
|
|
|
using UniRx;
|
2025-06-03 02:42:28 -04:00
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
namespace Ichni.RhythmGame
|
|
|
|
|
|
{
|
|
|
|
|
|
public abstract class SubstantialObject : GameElement, IHaveTransformSubmodule, IHaveTimeDurationSubmodule, IHaveColorSubmodule
|
|
|
|
|
|
{
|
|
|
|
|
|
public string themeBundleName, objectName;
|
|
|
|
|
|
|
|
|
|
|
|
public TransformSubmodule transformSubmodule { get; set; }
|
|
|
|
|
|
public TimeDurationSubmodule timeDurationSubmodule { get; set; }
|
|
|
|
|
|
public ColorSubmodule colorSubmodule { get; set; }
|
|
|
|
|
|
public virtual bool haveEmission => false;
|
|
|
|
|
|
|
|
|
|
|
|
public static SubstantialObject GenerateElement(string elementName, Guid id, List<string> tags, bool isFirstGenerated,
|
|
|
|
|
|
string themeBundleName, string objectName, GameElement parentElement)
|
|
|
|
|
|
{
|
|
|
|
|
|
GameObject themeBundleObject = ThemeBundleManager.instance.GetObject<GameObject>(themeBundleName, objectName);
|
|
|
|
|
|
SubstantialObject substantialObject = Instantiate(themeBundleObject, parentElement.transform).GetComponent<SubstantialObject>();
|
|
|
|
|
|
substantialObject.Initialize(elementName, id, tags, isFirstGenerated, parentElement);
|
|
|
|
|
|
substantialObject.themeBundleName = themeBundleName;
|
|
|
|
|
|
substantialObject.objectName = objectName;
|
|
|
|
|
|
substantialObject.FirstSetUpObject(isFirstGenerated);
|
|
|
|
|
|
return substantialObject;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// 初次生成继承自SubstantialObject的对象时,生成方法必然使用SubstantialObject中的GenerateElement方法。
|
|
|
|
|
|
/// 因此对于需要进行特殊处理的子类,需要重写FirstSetUpObject方法。
|
|
|
|
|
|
/// 在读取Beatmap时,生成物体则使用子类本身的GenerateElement方法。
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public virtual void FirstSetUpObject(bool isFirstGenerated)
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override void SetDefaultSubmodules()
|
|
|
|
|
|
{
|
|
|
|
|
|
transformSubmodule = new TransformSubmodule(this);
|
|
|
|
|
|
timeDurationSubmodule = new TimeDurationSubmodule(this);
|
|
|
|
|
|
colorSubmodule = new ColorSubmodule(this);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
namespace Beatmap
|
|
|
|
|
|
{
|
|
|
|
|
|
public class SubstantialObject_BM : GameElement_BM
|
|
|
|
|
|
{
|
|
|
|
|
|
public string themeBundleName;
|
|
|
|
|
|
public string objectName;
|
|
|
|
|
|
|
|
|
|
|
|
public SubstantialObject_BM()
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public SubstantialObject_BM(string elementName, Guid elementGuid, List<string> tags, GameElement_BM attachedElement,
|
|
|
|
|
|
string themeBundleName, string objectName)
|
|
|
|
|
|
: base(elementName, elementGuid, tags, attachedElement)
|
|
|
|
|
|
{
|
|
|
|
|
|
this.themeBundleName = themeBundleName;
|
|
|
|
|
|
this.objectName = objectName;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public override void ExecuteBM()
|
|
|
|
|
|
{
|
|
|
|
|
|
throw new NotImplementedException();
|
|
|
|
|
|
}
|
2025-08-11 14:04:06 -04:00
|
|
|
|
|
2025-06-03 02:42:28 -04:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|