protected virtual void Duplicate(IMyConstProperty targetProp)
        {
            MyAnimatedProperty <T> animatedTargetProp = targetProp as MyAnimatedProperty <T>;

            System.Diagnostics.Debug.Assert(animatedTargetProp != null);

            animatedTargetProp.Interpolator = Interpolator;
            animatedTargetProp.ClearKeys();

            foreach (ValueHolder pair in m_keys)
            {
                animatedTargetProp.AddKey(pair);
            }
        }
        protected override void Duplicate(IMyConstProperty targetProp)
        {
            MyAnimatedProperty2D<T, V, W> animatedTargetProp = targetProp as MyAnimatedProperty2D<T, V, W>;
            System.Diagnostics.Debug.Assert(animatedTargetProp != null);

            animatedTargetProp.Interpolator = Interpolator;
            animatedTargetProp.m_interpolator2 = m_interpolator2;

            animatedTargetProp.ClearKeys();

            foreach (ValueHolder key in m_keys)
            {
                animatedTargetProp.AddKey(key.Duplicate());
            }
        }
 protected virtual void Duplicate(IMyConstProperty targetProp)
 {
     targetProp.SetValue(GetValue<T>());
 }