/** * Copyright(c) Live2D Inc. All rights reserved. * * Use of this source code is governed by the Live2D Open Software license * that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html. */ using System.Collections.Generic; using UnityEngine; namespace Live2D.Cubism.Framework { /// /// Extensions for s. /// public static class ComponentExtensionMethods { /// /// Gets components for each item of a sequence and flattens the resulting sequences into one sequence. /// /// Component type to find. /// Array to query. /// Matches. public static T[] GetComponentsMany(this Component[] self) where T : Component { var components = new List(); for (var i = 0; i < self.Length; ++i) { var range = self[i].GetComponents(); // Skip empty ranges. if (range == null || range.Length == 0) { continue; } components.AddRange(range); } return components.ToArray(); } /// /// Adds a component to multiple objects. /// /// Component type to add. /// Array of objects. /// Added components. public static T[] AddComponentEach(this Component[] self) where T : Component { var components = new T[self.Length]; for (var i = 0; i < self.Length; ++i) { components[i] = self[i].gameObject.AddComponent(); } return components; } } }