/// Assembly.GetTypes() can throw in some cases. This extension will catch that exception and return only the types which were successfully loaded from the assembly.
/// Draws a wire frame <see href="https://docs.unity3d.com/ScriptReference/Bounds.html">Bounds</see> object using <see href="https://docs.unity3d.com/ScriptReference/Debug.DrawLine.html">Debug.DrawLine</see>.
/// </summary>
/// <param name="bounds">The <see href="https://docs.unity3d.com/ScriptReference/Bounds.html">Bounds</see> to draw.</param>
/// <param name="color">Color of the line.</param>
/// <param name="duration">How long the line should be visible for in seconds.</param>
/// <param name="depthTest">Should the line be obscured by objects closer to the camera?</param>
/// <param name="canvas">The canvas to raycast against</param>
/// <param name="rayOrigin">The origin of the ray</param>
/// <param name="rayDirection">The direction of the ray</param>
/// <param name="distance">The distance of the ray</param>
/// <param name="hitPoint">The hitpoint of the ray</param>
/// <param name="hitChildObject">The child object that was hit or the canvas itself if it has no active children that were within the hit range.</param>
/// Gets a child rect transform for the given point and parameters.
/// </summary>
/// <param name="rectTransformParent">The rect transform to look for children that may contain the projected (orthogonal to the child's normal) world point</param>
/// <param name="worldPoint">The world point</param>
/// <param name="recursive">Indicates if the check should be done recursively</param>
/// <param name="shouldReturnActive">If true, will only check children that are active, otherwise it will check all children.</param>
/// <param name="shouldReturnRaycastable">If true, will only check children that if they have a graphic and have its member raycastTarget set to true, otherwise will ignore the raycastTarget value. Will still allow children to be checked that do not have a graphic component.</param>
/// Checks if two numbers are approximately equal. Similar to <see href="https://docs.unity3d.com/ScriptReference/Mathf.Approximately.html">Mathf.Approximately(float, float)</see>, but the tolerance
/// can be specified.
/// </summary>
/// <param name="number">One of the numbers to compare.</param>
/// <param name="other">The other number to compare.</param>
/// <param name="tolerance">The amount of tolerance to allow while still considering the numbers approximately equal.</param>
/// <returns>True if the difference between the numbers is less than or equal to the tolerance, false otherwise.</returns>
/// Extensions for <see href="https://docs.unity3d.com/ScriptReference/ScriptableObject.html">ScriptableObject</see>s
/// </summary>
publicstaticclassScriptableObjectExtensions
{
/// <summary>
/// Creates, saves, and then opens a new asset for the target <see href="https://docs.unity3d.com/ScriptReference/ScriptableObject.html">ScriptableObject</see>.
/// </summary>
/// <param name="scriptableObject"><see href="https://docs.unity3d.com/ScriptReference/ScriptableObject.html">ScriptableObject</see> you want to create an asset file for.</param>
/// <param name="path">Optional path for the new asset.</param>
/// <param name="fileName">Optional filename for the new asset.</param>
/// Gets all the scriptable object instances in the project.
/// </summary>
/// <typeparam name="T">The Type of <see href="https://docs.unity3d.com/ScriptReference/ScriptableObject.html">ScriptableObject</see> you're wanting to find instances of.</typeparam>
/// <returns>An Array of instances for the type.</returns>
/// Gets all the scriptable object instances in the project.
/// </summary>
/// <param name="assetType">The Type of <see href="https://docs.unity3d.com/ScriptReference/ScriptableObject.html">ScriptableObject</see> you're wanting to find instances of.</param>
/// <returns>An Array of instances for the type.</returns>
/// Checks if two numbers are approximately equal. Similar to <see href="https://docs.unity3d.com/ScriptReference/Mathf.Approximately.html">Mathf.Approximately(float, float)</see>, but the tolerance
/// can be specified.
/// </summary>
/// <param name="number">One of the numbers to compare.</param>
/// <param name="other">The other number to compare.</param>
/// <param name="tolerance">The amount of tolerance to allow while still considering the numbers approximately equal.</param>
/// <returns>True if the difference between the numbers is less than or equal to the tolerance, false otherwise.</returns>