From 730207ccd023cd96b8b4b73edd7c0b79cadcc1a5 Mon Sep 17 00:00:00 2001 From: Robert Date: Tue, 8 Jun 2021 23:24:43 +0200 Subject: [PATCH] Profile - Tweak initial load timeline behaviour --- src/Artemis.Core/Models/Profile/Folder.cs | 10 ++++++---- src/Artemis.Core/Models/Profile/Layer.cs | 8 ++++++-- .../Models/Profile/RenderProfileElement.cs | 1 + src/Artemis.Core/Models/Profile/Timeline.cs | 3 ++- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/Artemis.Core/Models/Profile/Folder.cs b/src/Artemis.Core/Models/Profile/Folder.cs index b1ab731cc..a1f8400e8 100644 --- a/src/Artemis.Core/Models/Profile/Folder.cs +++ b/src/Artemis.Core/Models/Profile/Folder.cs @@ -99,11 +99,12 @@ namespace Artemis.Core /// public override void Reset() { - DisplayConditionMet = false; - Timeline.JumpToEnd(); + UpdateDisplayCondition(); - foreach (ProfileElement child in Children) - child.Reset(); + if (DisplayConditionMet) + Timeline.JumpToStart(); + else + Timeline.JumpToEnd(); } /// @@ -243,6 +244,7 @@ namespace Artemis.Core internal override void Load() { ExpandedPropertyGroups.AddRange(FolderEntity.ExpandedPropertyGroups); + Reset(); // Load child folders foreach (FolderEntity childFolder in Profile.ProfileEntity.Folders.Where(f => f.ParentId == EntityId)) diff --git a/src/Artemis.Core/Models/Profile/Layer.cs b/src/Artemis.Core/Models/Profile/Layer.cs index a823e6907..f4f403100 100644 --- a/src/Artemis.Core/Models/Profile/Layer.cs +++ b/src/Artemis.Core/Models/Profile/Layer.cs @@ -329,8 +329,12 @@ namespace Artemis.Core /// public override void Reset() { - DisplayConditionMet = false; - Timeline.JumpToEnd(); + UpdateDisplayCondition(); + + if (DisplayConditionMet) + Timeline.JumpToStart(); + else + Timeline.JumpToEnd(); } /// diff --git a/src/Artemis.Core/Models/Profile/RenderProfileElement.cs b/src/Artemis.Core/Models/Profile/RenderProfileElement.cs index f5df222be..559feecdc 100644 --- a/src/Artemis.Core/Models/Profile/RenderProfileElement.cs +++ b/src/Artemis.Core/Models/Profile/RenderProfileElement.cs @@ -125,6 +125,7 @@ namespace Artemis.Core bool stickToMainSegment = Timeline.PlayMode == TimelinePlayMode.Repeat && DisplayConditionMet; if (DisplayCondition != null && DisplayCondition.ContainsEvents) stickToMainSegment = false; + Timeline.Update(TimeSpan.FromSeconds(deltaTime), stickToMainSegment); } diff --git a/src/Artemis.Core/Models/Profile/Timeline.cs b/src/Artemis.Core/Models/Profile/Timeline.cs index 9c1fc13a7..9fb9a201f 100644 --- a/src/Artemis.Core/Models/Profile/Timeline.cs +++ b/src/Artemis.Core/Models/Profile/Timeline.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; +using System.Threading; using Artemis.Storage.Entities.Profile; namespace Artemis.Core @@ -322,7 +323,7 @@ namespace Artemis.Core IsOverridden = false; _lastOverridePosition = Position; - + if (stickToMainSegment && Position > MainSegmentEndPosition) { // If the main segment has no length, simply stick to the start of the segment