using System.Collections.Generic; using UnityEngine; namespace Ogxd { public static class Extensions { public static Mesh GetMesh(this GameObject gameObject) { MeshFilter meshFilter = gameObject.GetComponent(); if (meshFilter) return meshFilter.sharedMesh; else return null; } public static Material[] GetMaterials(this GameObject gameObject) { Renderer renderer = gameObject.GetComponent(); if (renderer) return renderer.sharedMaterials; else return new Material[0]; } public static List GetChildrenRecursive(this GameObject gameObject) { List gameObjects = new List(); Queue queue = new Queue(); queue.Enqueue(gameObject); while (queue.Count != 0) { GameObject current = queue.Dequeue(); foreach (Transform transform in current.transform) { queue.Enqueue(transform.gameObject); gameObjects.Add(transform.gameObject); } } return gameObjects; } } }