private void BeforeCurveChange(object sender, BGCurveChangedArgs.BeforeChange e) { // Undo.IncrementCurrentGroup(); undoGroup = Undo.GetCurrentGroup(); var operation = e != null && e.Operation != null ? e.Operation : "Curve change"; Undo.RecordObject(Curve, operation); if (Curve.FieldsCount > 0) { foreach (var field in Curve.Fields) { Undo.RecordObject(field, operation); } } var pointsMode = Curve.PointsMode; if (Curve.PointsCount > 0) { var points = Curve.Points; foreach (var point in points) { if (point.PointTransform != null) { Undo.RecordObject(point.PointTransform, operation); } } if (pointsMode != BGCurve.PointsModeEnum.Inlined) { switch (pointsMode) { case BGCurve.PointsModeEnum.Components: foreach (var point in points) { Undo.RecordObject((BGCurvePointComponent)point, operation); } break; case BGCurve.PointsModeEnum.GameObjectsNoTransform: case BGCurve.PointsModeEnum.GameObjectsTransform: foreach (var point in points) { var pointGo = (BGCurvePointGO)point; Undo.RecordObject(pointGo, operation); if (pointsMode == BGCurve.PointsModeEnum.GameObjectsTransform) { Undo.RecordObject(pointGo.transform, operation); } } break; } } } }
private void BeforeCurveChange(object sender, BGCurveChangedArgs.BeforeChange e) { Undo.RecordObject(Curve, e != null ? e.Operation : "Curve change"); }