Beispiel #1
0
        private void cmdAnimate_Execute(string propertyName)
        {
            PropertyInfo pi = CurrentAnimatable.GetType().GetProperty(propertyName);

            if (pi == null)
            {
                return;
            }

            double value = Convert.ToDouble(pi.GetValue(CurrentAnimatable));

            bool   log      = false;
            double minValue = 0;
            double maxValue = 0;

            foreach (PropertyModel pm in CurrentAnimatable.AnimatableProperties)
            {
                if (pm.Name == propertyName)
                {
                    log      = pm.Logarithmic;
                    minValue = pm.MinValue;
                    maxValue = pm.MaxValue;
                }
            }

            CurrentAnimatable.AnimatedProperties.Add(new AnimatedProperty(propertyName, new Keyframe(CurrentFrame, value), minValue, maxValue, log));
        }
Beispiel #2
0
        public void ChangeAnimatableParameter(double value, string propertyName)
        {
            if (isPropertyAnimated(propertyName, CurrentAnimatable.AnimatedProperties))
            {
                AnimatedProperty ap;
                getAnimatedPropertyReference(propertyName, CurrentAnimatable.AnimatedProperties, out ap);
                if (ap == null)
                {
                    return;
                }

                Keyframe kf;
                if (containsKeyframe(CurrentFrame, ap.Keyframes, out kf))
                {
                    kf.Value = value;
                }
                else
                {
                    ap.Keyframes.Add(new Keyframe(CurrentFrame, value));
                }
            }
            else
            {
                PropertyInfo pi = CurrentAnimatable.GetType().GetProperty(propertyName);
                if (pi == null)
                {
                    return;
                }

                if (pi.PropertyType == typeof(int))
                {
                    pi.SetValue(CurrentAnimatable, (int)value);
                }
                else if (pi.PropertyType == typeof(double))
                {
                    pi.SetValue(CurrentAnimatable, value);
                }
                else if (pi.PropertyType == typeof(bool))
                {
                    pi.SetValue(CurrentAnimatable, value > 0.5 ? true : false);
                }
            }
        }