public void OnClick(GameObject[] affectedObjectsArray)
        {
            CustomModule.SHOW_StringInput("Find:", EditorPrefs.GetString("EModules/MultyRenamer/Find", ""), (find) =>
                                          { if (string.IsNullOrEmpty(find))
                                            {
                                                return;
                                            }

                                            EditorPrefs.SetString("EModules/MultyRenamer/Find", find);
                                            CustomModule.SHOW_StringInput("Replace:", EditorPrefs.GetString("EModules/MultyRenamer/Replace", ""), (replace) =>
                                                                          { EditorPrefs.SetString("EModules/MultyRenamer/Replace", replace);

                                                  foreach (var item in affectedObjectsArray)
                                                  {
                                                      if (!item)
                                                      {
                                                          continue;
                                                      }

                                                      Undo.RecordObject(item, "Multy Renamer");
                                                      item.name = item.name.Replace(find, replace);
                                                      EditorUtility.SetDirty(item);
                                                  }
                                                                          }); });
        }
        public void OnClick(GameObject[] affectedObjectsArray)
        {
            var onlytop = MyMenu_Utils.GetOnlyTopObjects(affectedObjectsArray).OrderBy(go => go.transform.GetSiblingIndex()).ToArray();

            if (onlytop.Length == 0)
            {
                return;
            }

            var center_object = onlytop[onlytop.Length - 1];

            var groupParent       = center_object.transform.parent;
            var groupSiblingIndex = center_object.transform.GetSiblingIndex();

            var reference = center_object;
            var NEW_NAME  = reference.name + " Group";

            // Save Previous Name Variant
            // CustomModule.SHOW_StringInput( "Group Name:", EditorPrefs.GetString( "EModules/MultyRenamer/GroupName", NEW_NAME ) , ( name ) =>
            // {   EditorPrefs.SetString( "EModules/MultyRenamer/GroupName", name );

            // Top Object Name Variant
            CustomModule.SHOW_StringInput("Group Name:", NEW_NAME, (name) =>
            {
                var groupRoot = new GameObject(name);
                groupRoot.transform.SetParent(groupParent, false);
                //groupRoot.transform.localScale = Vector3.one;
                groupRoot.transform.SetSiblingIndex(groupSiblingIndex);
                //********************************//
                //groupRoot.transform.position = center_object.transform.position;
                //groupRoot.transform.rotation = center_object.transform.rotation;
                //********************************//

                //MyMenu_Utils.AssignUniqueName( groupRoot ); // name
                if (reference.GetComponent <RectTransform>())            // canvas
                {
                    var source              = reference.GetComponent <RectTransform>();
                    var dest                = groupRoot.AddComponent <RectTransform>();
                    dest.sizeDelta          = source.sizeDelta;
                    dest.pivot              = source.pivot;
                    dest.anchoredPosition3D = source.anchoredPosition3D;
                    dest.localRotation      = source.localRotation;
                    dest.localScale         = source.localScale;
                    dest.anchorMin          = source.anchorMin;
                    dest.anchorMax          = source.anchorMax;
                    dest.offsetMin          = source.offsetMin;
                    dest.offsetMax          = source.offsetMax;
                    groupRoot.AddComponent <CanvasRenderer>();
                }

                /*  if ( groupRoot.GetComponentsInParent<Canvas>( true ).Length != 0 )     // canvas
                 * {   var rect = groupRoot.AddComponent<RectTransform>();
                 *    rect.anchorMin = Vector2.zero;
                 *    rect.anchorMax = Vector2.one;
                 *    rect.offsetMin = Vector2.zero;
                 *    rect.offsetMax = Vector2.zero;
                 *    groupRoot.AddComponent<CanvasRenderer>();
                 * }*/

                Undo.RegisterCreatedObjectUndo(groupRoot, groupRoot.name);

                foreach (var gameObject in onlytop)
                {
                    Undo.SetTransformParent(gameObject.transform, groupRoot.transform, groupRoot.name);
                }

                HierarchyExtensions.Utilities.SetExpanded(groupRoot.GetInstanceID(), true);

                Selection.objects = onlytop.ToArray();
            });

            //Selection.objects = new[] { groubObject };
        }
        public void OnClick(GameObject[] affectedObjectsArray)
        {
            var onlytop = MyMenu_Utils.GetOnlyTopObjects(affectedObjectsArray).OrderBy(go => go.transform.GetSiblingIndex()).ToArray();

            if (onlytop.Length == 0)
            {
                return;
            }

            var last_object = onlytop[onlytop.Length - 1];

            var groupParent       = onlytop[0].transform.parent;
            var groupSiblingIndex = onlytop[0].transform.GetSiblingIndex();


            var NEW_NAME = last_object.name + " Group";


            // Save Previous Name Variant
            // CustomModule.SHOW_StringInput( "Group Name:", EditorPrefs.GetString( "EModules/MultyRenamer/GroupName", NEW_NAME ) , ( name ) =>
            // {   EditorPrefs.SetString( "EModules/MultyRenamer/GroupName", name );

            // Top Object Name Variant
            CustomModule.SHOW_StringInput("Group Name:", NEW_NAME, (name) =>
            {
                var groupRoot = new GameObject(name);
                groupRoot.transform.SetParent(groupParent, false);
                groupRoot.transform.localScale = Vector3.one;
                groupRoot.transform.SetSiblingIndex(groupSiblingIndex);
                //********************************//
                Vector3 center = Vector3.zero;
                Vector3 rot    = Vector3.zero;

                foreach (var item in onlytop)
                {
                    center += item.transform.position;
                    rot    += item.transform.eulerAngles;
                }

                center /= onlytop.Length;
                rot    /= onlytop.Length;
                groupRoot.transform.position    = center;
                groupRoot.transform.eulerAngles = rot;
                //********************************//

                //MyMenu_Utils.AssignUniqueName( groupRoot ); // name
                if (groupRoot.GetComponentsInParent <Canvas>(true).Length != 0)            // canvas
                {
                    var rect       = groupRoot.AddComponent <RectTransform>();
                    rect.anchorMin = Vector2.zero;
                    rect.anchorMax = Vector2.one;
                    rect.offsetMin = Vector2.zero;
                    rect.offsetMax = Vector2.zero;
                    groupRoot.AddComponent <CanvasRenderer>();
                }

                Undo.RegisterCreatedObjectUndo(groupRoot, groupRoot.name);

                foreach (var gameObject in onlytop)
                {
                    Undo.SetTransformParent(gameObject.transform, groupRoot.transform, groupRoot.name);
                }

                HierarchyExtensions.Utilities.SetExpanded(groupRoot.GetInstanceID(), true);

                Selection.objects = onlytop.ToArray();
            });
            //Selection.objects = new[] { groubObject };
        }