public static Matrix4x4 GetSelectedObjectsMeanTransform() { Matrix4x4 meanTransformMatrix = Matrix4x4.identity; #if UNITY_EDITOR Transform[] selectedTransforms = Selection.GetTransforms(SelectionMode.Unfiltered); int numTransforms = selectedTransforms.Length; if (numTransforms > 0) { meanTransformMatrix = selectedTransforms[0].localToWorldMatrix; for (int i = 1; i < numTransforms; ++i) { meanTransformMatrix *= selectedTransforms[i].localToWorldMatrix; } Vector3 position = HEU_HAPIUtility.GetPosition(ref meanTransformMatrix); position /= (float)numTransforms; HEU_HAPIUtility.SetMatrixPosition(ref meanTransformMatrix, ref position); } #endif return(meanTransformMatrix); }