#if UNITY_EDITOR using UnityEngine; using System.Collections.Generic; namespace GSpawn { public static class ObjectAlignment { private static List _parentObjectBuffer = new List(); private static List _transformBuffer = new List(); public static void alignObjects(IEnumerable gameObjects, int axisIndex, bool allowUndoRedo) { GameObjectEx.getParents(gameObjects, _parentObjectBuffer); TransformEx.getTransforms(gameObjects, _transformBuffer); float avgPos = 0.0f; foreach (var transform in _transformBuffer) avgPos += transform.position[axisIndex]; if (allowUndoRedo) UndoEx.recordTransforms(_transformBuffer); avgPos /= (float)_transformBuffer.Count; foreach (var transform in _transformBuffer) { Vector3 newPos = transform.position; newPos[axisIndex] = avgPos; transform.position = newPos; } } } } #endif