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."); }
/// <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); }
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); }
public Vector2CurveViewModel([NotNull] CurveEditorViewModel editor, [NotNull] IComputeCurve <Vector2> computeCurve, CurveViewModelBase parent = null, string name = null) : base(editor, parent, computeCurve, name) { }
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) { }
protected DecomposedCurveViewModel([NotNull] CurveEditorViewModel editor, CurveViewModelBase parent, [NotNull] IComputeCurve <TValue> computeCurve, string name = null) : base(editor, parent, computeCurve, name) { }