public override List <CamViewState.SelObj> CloneObjects(IEnumerable <CamViewState.SelObj> objEnum)
        {
            List <SelObj> result = new List <SelObj>();

            if (objEnum.OfType <SelShape>().Any())
            {
                ShapeInfo[] selShapes = objEnum.OfType <SelShape>().Select(s => (s.ActualObject as ShapeInfo).Clone()).ToArray();
                CreateRigidBodyShapeAction cloneAction = new CreateRigidBodyShapeAction(this.selectedBody, selShapes);
                UndoRedoManager.Do(cloneAction);
                result.AddRange(cloneAction.Result.Select(s => SelShape.Create(s)));
            }
            return(result);
        }
        public override List <ObjectEditorSelObj> CloneObjects(IEnumerable <ObjectEditorSelObj> objEnum)
        {
            if (objEnum == null || !objEnum.Any())
            {
                return(base.CloneObjects(objEnum));
            }
            List <ObjectEditorSelObj> result = new List <ObjectEditorSelObj>();

            if (objEnum.OfType <RigidBodyEditorSelShape>().Any())
            {
                ShapeInfo[] selShapes = objEnum.OfType <RigidBodyEditorSelShape>().Select(s => (s.ActualObject as ShapeInfo).DeepClone()).ToArray();
                CreateRigidBodyShapeAction cloneAction = new CreateRigidBodyShapeAction(this.selectedBody, selShapes);
                UndoRedoManager.Do(cloneAction);
                result.AddRange(cloneAction.Result.Select(s => RigidBodyEditorSelShape.Create(s)));
            }
            return(result);
        }