示例#1
0
        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;
                    }
                }
            }
        }
示例#2
0
 private void BeforeCurveChange(object sender, BGCurveChangedArgs.BeforeChange e)
 {
     Undo.RecordObject(Curve, e != null ? e.Operation : "Curve change");
 }