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