Example #1
0
        private CurveViewModelBase CreateCurveHierarchy <TValue>([NotNull] IComputeCurve <TValue> computeCurve, CurveViewModelBase parent = null, string name = null)
            where TValue : struct
        {
            var colorCurve = computeCurve as IComputeCurve <Color4>;

            if (colorCurve != null)
            {
                return(CreateCurveHierarchy <Color4, Color4CurveViewModel, Color4KeyFrameCurveViewModel>(colorCurve, parent, name));
            }

            var floatCurve = computeCurve as IComputeCurve <float>;

            if (floatCurve != null)
            {
                return(CreateCurveHierarchy <float, FloatCurveViewModel, FloatKeyFrameCurveViewModel>(floatCurve, parent, name));
            }

            var rotationCurve = computeCurve as IComputeCurve <Quaternion>;

            if (rotationCurve != null)
            {
                return(CreateCurveHierarchy <Quaternion, RotationCurveViewModel, RotationKeyFrameCurveViewModel>(rotationCurve, parent, name));
            }

            var vector2Curve = computeCurve as IComputeCurve <Vector2>;

            if (vector2Curve != null)
            {
                return(CreateCurveHierarchy <Vector2, Vector2CurveViewModel, Vector2KeyFrameCurveViewModel>(vector2Curve, parent, name));
            }

            var vector3Curve = computeCurve as IComputeCurve <Vector3>;

            if (vector3Curve != null)
            {
                return(CreateCurveHierarchy <Vector3, Vector3CurveViewModel, Vector3KeyFrameCurveViewModel>(vector3Curve, parent, name));
            }

            var vector4Curve = computeCurve as IComputeCurve <Vector4>;

            if (vector4Curve != null)
            {
                return(CreateCurveHierarchy <Vector4, Vector4CurveViewModel, Vector4KeyFrameCurveViewModel>(vector4Curve, parent, name));
            }

            throw new NotSupportedException($"The type IComputeCurve<{typeof(TValue).Name}> is not supported by this editor.");
        }
Example #2
0
        /// <summary>
        /// Adds the <paramref name="computeCurve"/> to the curve editor.
        /// </summary>
        /// <typeparam name="TValue">The type of the curve node values.</typeparam>
        /// <param name="computeCurve">The curve.</param>
        /// <param name="name">The name of the curve.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="computeCurve"/> is <c>null</c>.</exception>
        /// <exception cref="NotSupportedException">The <typeparamref name="TValue"/> is not supported by the editor.</exception>
        public void AddCurve <TValue>([NotNull] IComputeCurve <TValue> computeCurve, string name)
            where TValue : struct
        {
            if (computeCurve == null)
            {
                throw new ArgumentNullException(nameof(computeCurve));
            }

            // Check if the curve is already here
            if (SelectCurveIfExists(computeCurve))
            {
                return;
            }

            var curve = CreateCurveHierarchy(computeCurve, name: name);

            AddCurvePrivate(curve);
        }
Example #3
0
        private bool SelectCurveIfExists <TValue>(IComputeCurve <TValue> computeCurve) where TValue : struct
        {
            var curveNode = Session.AssetNodeContainer.GetNode(computeCurve);

            if (curveNode == null)
            {
                return(false);
            }

            var curve = Curves.OfType <CurveViewModelBase <TValue> >().FirstOrDefault(c => c.CurveId == curveNode.Guid);

            if (curve == null)
            {
                return(false);
            }

            SelectedCurve = curve;
            return(true);
        }
Example #4
0
 public Vector2CurveViewModel([NotNull] CurveEditorViewModel editor, [NotNull] IComputeCurve <Vector2> computeCurve, CurveViewModelBase parent = null, string name = null)
     : base(editor, parent, computeCurve, name)
 {
 }
Example #5
0
        private CurveViewModelBase <TValue> CreateCurveHierarchy <TValue, TCurveViewModel, TKeyFrameCurveViewModel>([NotNull] IComputeCurve <TValue> computeCurve, CurveViewModelBase parent = null, string name = null)
            where TValue : struct
            where TCurveViewModel : CurveViewModelBase <TValue>
            where TKeyFrameCurveViewModel : CurveViewModelBase <TValue>
        {
            var animationCurve = computeCurve as ComputeAnimationCurve <TValue>;

            if (animationCurve != null)
            {
                var curve =
                    (TKeyFrameCurveViewModel)Activator.CreateInstance(typeof(TKeyFrameCurveViewModel), this, (ComputeAnimationCurve <TValue>)computeCurve, parent, name);
                curve.Initialize();
                return(curve);
            }

            var binaryCurve = computeCurve as ComputeBinaryCurve <TValue>;

            if (binaryCurve != null)
            {
                var curve = (TCurveViewModel)Activator.CreateInstance(typeof(TCurveViewModel), this, binaryCurve, parent, name);
                if (binaryCurve.LeftChild != null)
                {
                    var displayName = GetDisplayName(typeof(ComputeBinaryCurve <TValue>), nameof(ComputeBinaryCurve <TValue> .LeftChild));
                    curve.Children.Add(CreateCurveHierarchy <TValue, TCurveViewModel, TKeyFrameCurveViewModel>(binaryCurve.LeftChild, curve, displayName ?? "Left"));
                }
                if (binaryCurve.RightChild != null)
                {
                    // Retrieve the display attribute
                    var displayName = GetDisplayName(typeof(ComputeBinaryCurve <TValue>), nameof(ComputeBinaryCurve <TValue> .RightChild));
                    curve.Children.Add(CreateCurveHierarchy <TValue, TCurveViewModel, TKeyFrameCurveViewModel>(binaryCurve.RightChild, curve, displayName ?? "Right"));
                }
                curve.Initialize();
                return(curve);
            }
            // Fallback curve
            else
            {
                var curve = (TCurveViewModel)Activator.CreateInstance(typeof(TCurveViewModel), this, computeCurve, parent, name);
                curve.Initialize();
                return(curve);
            }
        }
 public RotationCurveViewModel([NotNull] CurveEditorViewModel editor, [NotNull] IComputeCurve<Quaternion> computeCurve, CurveViewModelBase parent = null, string name = null)
     : base(editor, parent, computeCurve, name)
 {
 }
Example #7
0
 protected DecomposedCurveViewModel([NotNull] CurveEditorViewModel editor, CurveViewModelBase parent, [NotNull] IComputeCurve <TValue> computeCurve, string name = null)
     : base(editor, parent, computeCurve, name)
 {
 }