Example #1
0
        public bool AddOrUpdateKey(Keyframe f)
        {
            if (f.Time < validMin || f.Time > validMax)
            {
                throw new gException("KeyframeSequence.AddKey: time {0} is out of valid range", f.Time);
            }

            IChangeOp change;

            if (Keys.ContainsKey(f.Time))
            {
                Keyframe prev = Keys[f.Time];
                change = new KeyframeUpdateChange()
                {
                    before = prev, after = f, sequence = this
                };
            }
            else
            {
                change = new KeyframeAddRemoveChange()
                {
                    key = f, sequence = this, bAdded = true
                };
            }

            add_or_update_key(f);

            FUtil.SafeSendEvent(ChangeOpEvent, this, change);

            return(true);
        }
Example #2
0
 public bool UpdateKey(Keyframe f)
 {
     if (Keys.ContainsKey(f.Time))
     {
         Keyframe  prev   = Keys[f.Time];
         IChangeOp change = new KeyframeUpdateChange()
         {
             before = prev, after = f, sequence = this
         };
         Keys[f.Time] = f;
         FUtil.SafeSendEvent(ChangeOpEvent, this, change);
         return(true);
     }
     return(false);
 }
Example #3
0
        public void ApplyTransformation(Func <Frame3f, Frame3f> TransformF)
        {
            List <IChangeOp> changes = new List <IChangeOp>();

            foreach (Keyframe k in Keys.Values)
            {
                IChangeOp change = new KeyframeUpdateChange()
                {
                    sequence = this, before = k,
                    after    = new Keyframe(k.Time, TransformF(k.Frame))
                };
                changes.Add(change);
            }

            for (int i = 0; i < changes.Count; ++i)
            {
                changes[i].Apply();
                FUtil.SafeSendEvent(ChangeOpEvent, this, changes[i]);
            }

            FUtil.SafeSendEvent(ModifiedEvent, this, null);
        }