From e2956f7c290e23881b849542ee85f761f3ed3774 Mon Sep 17 00:00:00 2001 From: minenice55 Date: Mon, 4 Jul 2022 13:09:23 -0400 Subject: [PATCH] make copying use deep copies lol --- Assets/Scripts/Beatmap.cs | 6 +++ .../Scripts/LevelEditor/Timeline/Timeline.cs | 50 +++++++++---------- 2 files changed, 31 insertions(+), 25 deletions(-) diff --git a/Assets/Scripts/Beatmap.cs b/Assets/Scripts/Beatmap.cs index 23e030d2..f6473103 100644 --- a/Assets/Scripts/Beatmap.cs +++ b/Assets/Scripts/Beatmap.cs @@ -54,6 +54,12 @@ namespace HeavenStudio return this.MemberwiseClone(); } + public Entity DeepCopy() + { + //lol the AI generated this + return JsonConvert.DeserializeObject(JsonConvert.SerializeObject(this)); + } + public object this[string propertyName] { get diff --git a/Assets/Scripts/LevelEditor/Timeline/Timeline.cs b/Assets/Scripts/LevelEditor/Timeline/Timeline.cs index 05dc3532..35bd8120 100644 --- a/Assets/Scripts/LevelEditor/Timeline/Timeline.cs +++ b/Assets/Scripts/LevelEditor/Timeline/Timeline.cs @@ -572,36 +572,36 @@ namespace HeavenStudio.Editor.Track GameManager.instance.SortEventsList(); tempEntity = en; + + // default param value + var game = EventCaller.instance.GetMinigame(eventName.Split(0)); + var ep = EventCaller.instance.GetGameAction(game, eventName.Split(1)).parameters; + + if (ep != null) + { + for (int i = 0; i < ep.Count; i++) + { + object returnVal = ep[i].parameter; + + var propertyType = returnVal.GetType(); + if (propertyType == typeof(EntityTypes.Integer)) + { + returnVal = ((EntityTypes.Integer)ep[i].parameter).val; + } + else if (propertyType == typeof(EntityTypes.Float)) + { + returnVal = ((EntityTypes.Float)ep[i].parameter).val; + } + + tempEntity[ep[i].propertyName] = returnVal; + } + } } else { GameManager.instance.Beatmap.entities.Add(entity); GameManager.instance.SortEventsList(); } - - // default param value - var game = EventCaller.instance.GetMinigame(eventName.Split(0)); - var ep = EventCaller.instance.GetGameAction(game, eventName.Split(1)).parameters; - - if (ep != null) - { - for (int i = 0; i < ep.Count; i++) - { - object returnVal = ep[i].parameter; - - var propertyType = returnVal.GetType(); - if (propertyType == typeof(EntityTypes.Integer)) - { - returnVal = ((EntityTypes.Integer)ep[i].parameter).val; - } - else if (propertyType == typeof(EntityTypes.Float)) - { - returnVal = ((EntityTypes.Float)ep[i].parameter).val; - } - - tempEntity[ep[i].propertyName] = returnVal; - } - } } eventObjs.Add(eventObj); @@ -613,7 +613,7 @@ namespace HeavenStudio.Editor.Track public TimelineEventObj CopyEventObject(Beatmap.Entity e) { - Beatmap.Entity clone = (Beatmap.Entity) e.Clone(); + Beatmap.Entity clone = e.DeepCopy(); TimelineEventObj dup = AddEventObject(clone.datamodel, false, new Vector3(clone.beat, -clone.track * Timeline.instance.LayerHeight()), clone, true, RandomID()); return dup;