private void tangentsToolStripMenuItems_Click(object sender, EventArgs e) { ToolStripMenuItem item = (ToolStripMenuItem)sender; // Set tangent type of curves. // It assumes sender menuItem has a string like // "EditCurveSelections, EditCurveTangent". string[] texts = item.Tag.ToString().Split(new char[] { ',' }); EditCurveSelections selection = (EditCurveSelections)Enum.Parse( typeof(EditCurveSelections), texts[0]); EditCurveTangent tangent = (EditCurveTangent)Enum.Parse( typeof(EditCurveTangent), texts[1]); UpdateCurves(delegate(EditCurve curve) { curve.SetTangents(selection, tangent); }); }
/// <summary> /// Set specfied tangent type to selected tangents. /// </summary> /// <param name="targetTangent">target tangent (In/Out)</param> /// <param name="tangentType"></param> public void SetTangents(EditCurveSelections targetTangent, EditCurveTangent tangentType) { if (!Editable) { return; } EnsureUpdating("SetTangents"); // Change tangent type of selcted nodes. foreach (EditCurveKey key in selectedKeys.Values) { MarkModify(key); if (tangentType == EditCurveTangent.Stepped) { SetKeyContinuity(key, CurveContinuity.Step); } else { SetKeyContinuity(key, CurveContinuity.Smooth); if ((targetTangent & EditCurveSelections.TangentIn) != 0) { key.TangentInType = tangentType; } if ((targetTangent & EditCurveSelections.TangentOut) != 0) { key.TangentOutType = tangentType; } } } // Then, compute tangents. foreach (EditCurveKey key in selectedKeys.Values) { ComputeTangents(keys.IndexOf(key)); } }
/// <summary> /// Convert EditCurveTanget to CurveTangent. /// </summary> /// <param name="tangent"></param> /// <returns></returns> private static CurveTangent Convert(EditCurveTangent tangent) { return (tangent == EditCurveTangent.Fixed) ? CurveTangent.Flat : (CurveTangent)tangent; }
/// <summary> /// Set specfied tangent type to selected tangents. /// </summary> /// <param name="targetTangent">target tangent (In/Out)</param> /// <param name="tangentType"></param> public void SetTangents(EditCurveSelections targetTangent, EditCurveTangent tangentType) { if (!Editable) return; EnsureUpdating("SetTangents"); // Change tangent type of selcted nodes. foreach (EditCurveKey key in selectedKeys.Values) { MarkModify(key); if (tangentType == EditCurveTangent.Stepped) { SetKeyContinuity(key, CurveContinuity.Step); } else { SetKeyContinuity(key, CurveContinuity.Smooth); if ((targetTangent & EditCurveSelections.TangentIn) != 0) key.TangentInType = tangentType; if ((targetTangent & EditCurveSelections.TangentOut) != 0) key.TangentOutType = tangentType; } } // Then, compute tangents. foreach (EditCurveKey key in selectedKeys.Values) ComputeTangents(keys.IndexOf(key)); }
/// <summary> /// Convert EditCurveTanget to CurveTangent. /// </summary> /// <param name="tangent"></param> /// <returns></returns> private static CurveTangent Convert(EditCurveTangent tangent) { return((tangent == EditCurveTangent.Fixed) ? CurveTangent.Flat : (CurveTangent)tangent); }