mirror of
https://github.com/oliverbooth/X10D
synced 2024-11-14 16:15:41 +00:00
Add GetComponentsInChildrenOnly<T>
This commit is contained in:
parent
154b742c75
commit
60a3459663
@ -3,6 +3,8 @@
|
|||||||
## [3.1.0-nightly]
|
## [3.1.0-nightly]
|
||||||
### Added
|
### Added
|
||||||
- Readded Unity support:
|
- Readded Unity support:
|
||||||
|
- Added `Component.GetComponentsInChildrenOnly<T>()`
|
||||||
|
- Added `GameObject.GetComponentsInChildrenOnly<T>()`
|
||||||
- Added `GameObject.LookAt(GameObject[, Vector3])`
|
- Added `GameObject.LookAt(GameObject[, Vector3])`
|
||||||
- Added `GameObject.LookAt(Transform[, Vector3])`
|
- Added `GameObject.LookAt(Transform[, Vector3])`
|
||||||
- Added `GameObject.LookAt(Vector3[, Vector3])`
|
- Added `GameObject.LookAt(Vector3[, Vector3])`
|
||||||
|
21
X10D.Unity/src/ComponentExtensions.cs
Normal file
21
X10D.Unity/src/ComponentExtensions.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace X10D.Unity;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Extension methods for <see cref="Component" />.
|
||||||
|
/// </summary>
|
||||||
|
public static class ComponentExtensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Returns an array of components of the specified type, excluding components that live on the object to which this
|
||||||
|
/// component is attached.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="component">The component whose child components to retrieve.</param>
|
||||||
|
/// <typeparam name="T">The type of the components to retrieve.</typeparam>
|
||||||
|
/// <returns>An array <typeparamref name="T" /> representing the child components.</returns>
|
||||||
|
public static T[] GetComponentsInChildrenOnly<T>(this Component component)
|
||||||
|
{
|
||||||
|
return component.gameObject.GetComponentsInChildrenOnly<T>();
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace X10D.Unity;
|
namespace X10D.Unity;
|
||||||
|
|
||||||
@ -7,6 +7,35 @@ namespace X10D.Unity;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public static class GameObjectExtensions
|
public static class GameObjectExtensions
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Returns an array of components of the specified type, excluding components that live on this game object.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="gameObject">The game object whose child components to retrieve.</param>
|
||||||
|
/// <typeparam name="T">The type of the components to retrieve.</typeparam>
|
||||||
|
/// <returns>An array <typeparamref name="T" /> representing the child components.</returns>
|
||||||
|
public static T[] GetComponentsInChildrenOnly<T>(this GameObject gameObject)
|
||||||
|
{
|
||||||
|
var components = new List<T>(gameObject.GetComponentsInChildren<T>());
|
||||||
|
|
||||||
|
for (var index = 0; index < components.Count; index++)
|
||||||
|
{
|
||||||
|
if (components[index] is not Component childComponent)
|
||||||
|
{
|
||||||
|
// this shouldn't happen, since you can't add a non-Component to a game object,
|
||||||
|
// but GetComponentsInChildren<T> is not constrained, so this method shouldn't be either
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (childComponent.transform.parent != gameObject.transform)
|
||||||
|
{
|
||||||
|
components.RemoveAt(index);
|
||||||
|
index--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return components.ToArray();
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Rotates the transform component of this game object so the forward vector points at another game object.
|
/// Rotates the transform component of this game object so the forward vector points at another game object.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user