private void RenderAlignmentsAtOrigin()
    {
        EditorGUILayout.LabelField("Align Objects at Origin on:");

        targetAlignment = (AlignmentTypes) EditorGUILayout.EnumPopup(targetAlignment);

        EditorGUILayout.BeginHorizontal();

        if (GUILayout.Button("X") && hasSelection)
        {
            var transforms = selecteObjects.Select((o) => o.transform);

            foreach (var item in transforms)
            {
                item.position = GetPositionFrom(targetAlignment, TargetAxes.x, item.position, transforms);
            }
        }

        if (GUILayout.Button("Y") && hasSelection)
        {
            var transforms = selecteObjects.Select((o) => o.transform);

            foreach (var item in transforms)
            {
                item.position = GetPositionFrom(targetAlignment, TargetAxes.y, item.position, transforms);
            }
        }

        if (GUILayout.Button("Z") && hasSelection)
        {
            var transforms = selecteObjects.Select((o) => o.transform);

            foreach (var item in transforms)
            {
                item.position = GetPositionFrom(targetAlignment, TargetAxes.z, item.position, transforms);
            }
        }

        EditorGUILayout.EndHorizontal();
    }
    private Vector3 GetPositionFrom(AlignmentTypes type, TargetAxes axes, Vector3 oldPosition, IEnumerable<Transform> possibleReferences)
    {
        switch (type)
        {
            case AlignmentTypes.Origin:
                return GetNewPosition(oldPosition, axes);

            case AlignmentTypes.FirstSelected:
                var first = possibleReferences.First().position;
                return GetNewPosition(first, oldPosition, axes);

            case AlignmentTypes.LastSelected:
                var last = possibleReferences.Last().position;
                return GetNewPosition(last, oldPosition, axes);

            case AlignmentTypes.CenterOfMass:

                var sum = possibleReferences.Select(t => t.position).Aggregate((t_A, t_B) => t_A + t_B);
                var count = possibleReferences.Count();
                var avg = new Vector3(sum.x / count, sum.y / count, sum.z / count);
                return avg;

            default:
                return oldPosition;
        }
    }