public static void Delete(GameObject[] targets)
        {
            Validate(targets);
            var previousSelection = Selection.objects;

            Selection.objects = targets;
            Unsupported.DeleteGameObjectSelection();
            Selection.objects = previousSelection;
        }
        public static void Delete(GameObject gameObject)
        {
            var rigBuilder   = gameObject.GetComponent <RigBuilder>();
            var vaRigBuilder = gameObject.GetComponent <VeryAnimationRigBuilder>();
            var vaRig        = GetVeryAnimationRig(gameObject);
            var rig          = vaRig != null?vaRig.GetComponent <Rig>() : null;

            var index = rigBuilder != null && rig != null?rigBuilder.layers.FindIndex(x => x.rig == rig) : -1;

            if (rig != null)
            {
                Selection.activeGameObject = rig.gameObject;
                Unsupported.DeleteGameObjectSelection();
                if (rig != null)
                {
                    return;
                }
                rig = null;
            }
            if (vaRigBuilder != null)
            {
                Undo.DestroyObjectImmediate(vaRigBuilder);
                vaRigBuilder = null;
            }
            if (rigBuilder != null)
            {
                if (index >= 0 && index < rigBuilder.layers.Count)
                {
                    Undo.RecordObject(rigBuilder, "");
                    rigBuilder.layers.RemoveAt(index);
                    if (rigBuilder.layers.Count == 0)
                    {
                        Undo.DestroyObjectImmediate(rigBuilder);
                    }
                }
                rigBuilder = null;
            }
        }