Exemplo n.º 1
0
 public void SetTimeRegion(double originalRegionBegin, double originalRegionEnd, double finalRegionBegin, double finalRegionEnd)
 {
     using (SceneEditTransaction editTransaction = this.ViewModel.CreateEditTransaction(StringTable.UndoUnitMoveScheduledProperties))
     {
         double scaleFactor = (finalRegionEnd - finalRegionBegin) / (originalRegionEnd - originalRegionBegin);
         TimeRegionChangeDetails details = TimeRegionChangeDetails.None;
         if (Tolerances.AreClose(originalRegionEnd - originalRegionBegin, 0.0))
         {
             details |= TimeRegionChangeDetails.FromZero;
         }
         if (Tolerances.AreClose(finalRegionEnd - finalRegionBegin, 0.0))
         {
             details |= TimeRegionChangeDetails.ToZero;
         }
         if (!Tolerances.AreClose(scaleFactor, 1.0))
         {
             details |= TimeRegionChangeDetails.Scale;
         }
         if (!Tolerances.AreClose(originalRegionBegin, finalRegionBegin))
         {
             details |= TimeRegionChangeDetails.Translate;
         }
         this.RecursiveSetTimeRegion(details, scaleFactor, originalRegionBegin, originalRegionEnd, finalRegionBegin, finalRegionEnd);
         editTransaction.Commit();
     }
 }
Exemplo n.º 2
0
        private void RecursiveSetTimeRegion(TimeRegionChangeDetails details, double scaleFactor, double originalRegionBegin, double originalRegionEnd, double finalRegionBegin, double finalRegionEnd)
        {
            StoryboardTimelineSceneNode timelineSceneNode = this as StoryboardTimelineSceneNode;

            if (timelineSceneNode != null)
            {
                for (int index = 0; index < timelineSceneNode.Children.Count; ++index)
                {
                    timelineSceneNode.Children[index].RecursiveSetTimeRegion(details, scaleFactor, originalRegionBegin, originalRegionEnd, finalRegionBegin, finalRegionEnd);
                }
            }
            this.SetTimeRegionCore(details, scaleFactor, originalRegionBegin, originalRegionEnd, finalRegionBegin, finalRegionEnd);
        }
Exemplo n.º 3
0
 protected virtual void SetTimeRegionCore(TimeRegionChangeDetails details, double scaleFactor, double originalRegionBegin, double originalRegionEnd, double finalRegionBegin, double finalRegionEnd)
 {
     if ((details & TimeRegionChangeDetails.FromZero) != TimeRegionChangeDetails.None || (details & TimeRegionChangeDetails.ToZero) != TimeRegionChangeDetails.None)
     {
         this.Begin    = finalRegionBegin;
         this.Duration = finalRegionEnd - finalRegionBegin;
     }
     else if ((details & TimeRegionChangeDetails.Scale) != TimeRegionChangeDetails.None)
     {
         System.Windows.Duration?nullable = this.GetLocalOrDefaultValueAsWpf(TimelineSceneNode.DurationProperty) as System.Windows.Duration?;
         this.Duration = (!nullable.HasValue || !nullable.Value.HasTimeSpan ? this.NaturalDuration : nullable.Value.TimeSpan.TotalSeconds) * scaleFactor;
         this.Begin    = (this.Begin - originalRegionBegin) * scaleFactor + finalRegionBegin;
     }
     else
     {
         if ((details & TimeRegionChangeDetails.Translate) == TimeRegionChangeDetails.None)
         {
             return;
         }
         this.Begin += finalRegionBegin - originalRegionBegin;
     }
 }
Exemplo n.º 4
0
 protected override void SetTimeRegionCore(TimeRegionChangeDetails details, double scaleFactor, double originalRegionBegin, double originalRegionEnd, double finalRegionBegin, double finalRegionEnd)
 {
     if ((details & TimeRegionChangeDetails.ToZero) != TimeRegionChangeDetails.None)
     {
         IList <KeyFrameSceneNode> keyFrameCollection = this.KeyFrameCollection;
         if (keyFrameCollection.Count > 0)
         {
             for (int index = keyFrameCollection.Count - 1; index > 0; --index)
             {
                 this.RemoveKeyFrame(keyFrameCollection[index].Time);
             }
             keyFrameCollection[0].Time = finalRegionBegin;
         }
     }
     if ((details & TimeRegionChangeDetails.Scale) != TimeRegionChangeDetails.None && (details & TimeRegionChangeDetails.FromZero) == TimeRegionChangeDetails.None)
     {
         IList <KeyFrameSceneNode> keyFrameCollection = this.KeyFrameCollection;
         for (int index = 0; index < keyFrameCollection.Count; ++index)
         {
             KeyFrameSceneNode keyFrameSceneNode = keyFrameCollection[index];
             keyFrameSceneNode.Time = (keyFrameSceneNode.Time - originalRegionBegin) * scaleFactor + finalRegionBegin;
         }
     }
     else
     {
         if ((details & TimeRegionChangeDetails.Translate) == TimeRegionChangeDetails.None)
         {
             return;
         }
         double num = finalRegionBegin - originalRegionBegin;
         IList <KeyFrameSceneNode> keyFrameCollection = this.KeyFrameCollection;
         for (int index = 0; index < keyFrameCollection.Count; ++index)
         {
             keyFrameCollection[index].Time += num;
         }
     }
 }
 protected override void SetTimeRegionCore(TimeRegionChangeDetails details, double scaleFactor, double originalRegionBegin, double originalRegionEnd, double finalRegionBegin, double finalRegionEnd)
 {
 }