using System; using System.Collections; using System.Collections.Generic; using Lean.Pool; using UnityEngine; namespace Ichni.RhythmGame { public partial class EnvironmentObject : SubstantialObject { public bool isStatic; public static SubstantialObject GenerateElement(string elementName, Guid id, List tags, string themeBundleName, string objectName, BaseElement parent, Vector3 position, Vector3 eulerAngles, Vector3 scale, bool isStatic, bool isFirstGenerated = true) { EnvironmentObject themeBundleObject = ThemeBundleManager.instance.GetObject(themeBundleName, objectName); EnvironmentObject environmentObject = Instantiate(themeBundleObject, parent.transform).GetComponent(); environmentObject.Initialize(elementName, id, tags); environmentObject.isStatic = isStatic; return environmentObject; } } public partial class EnvironmentObject { public override void SaveBM() { matchedBM = new Beatmap.EnvironmentObject_BM(elementName, elementGuid, tags, parentElement.matchedBM, themeBundleName, objectName, isStatic); } } namespace Beatmap { public class EnvironmentObject_BM : BaseElement_BM { public string themeBundleName; public string objectName; public bool isStatic; public EnvironmentObject_BM() { } public EnvironmentObject_BM(string elementName, Guid elementGuid, List tags, BaseElement_BM attachedElement, string themeBundleName, string objectName, bool isStatic) : base(elementName, elementGuid, tags, attachedElement) { this.themeBundleName = themeBundleName; this.objectName = objectName; this.isStatic = isStatic; } public override void ExecuteBM() { matchedElement = EnvironmentObject.GenerateElement(elementName, elementGuid, tags, themeBundleName, objectName, GetElement(attachedElementGuid), Vector3.zero, Vector3.zero, Vector3.one, isStatic, false); } public override BaseElement DuplicateBM(BaseElement parent) { return EnvironmentObject.GenerateElement(elementName, elementGuid, tags, themeBundleName, objectName, parent, Vector3.zero, Vector3.zero, Vector3.one, isStatic, false); } } } }