Sirenix.Utilities Extension methods for the UnityEngine.Color type. Lerps between multiple colors. The colors. The t. Moves the towards implementation for Color. From color. To color. The maximum delta. Tries to parse a string to a Color. The following formats are supported: "new Color(0.4, 0, 0, 1)", "#FFEEBBFF", "#FFEECC", "FFEEBBFF", "FFEECC" The color string. The color. Returns true if the parse was a success. Converts a color to a string formatted to c# The color. new Color(r, g, b, a) Pows the color with the specified factor. The color. The factor. Normalizes the RGB values of the color ignoring the alpha value. The color. Delegate method extensions. Memoizes the specified func - returns the memoized version Memoizes the specified func - returns the memoized version FieldInfo method extensions. Determines whether the specified field is an alias. The field to check. true if the specified field is an alias; otherwise, false. Returns the original, backing field of an alias field if the field is an alias. The field to check. /// if set to true an exception will be thrown if the field is not aliased. The field was not aliased; this only occurs if throwOnNotAliased is true. Garbage free enumerator methods. Garbage free enumerator for lists. Garbage free enumerator for dictionaries. Garbage free enumator for dictionary values. Garbage free enumerator for hashsets. List iterator. Creates a list iterator. Gets the enumerator. Gets the current value. Moves to the next value. Disposes the iterator. Hashset iterator. Creates a hashset iterator. Gets the enumerator. Gets the current value. Moves to the next value. Disposes the iterator. Dictionary iterator. Creates a dictionary iterator. Gets the enumerator. Gets the current value. Moves to the next value. Disposes the iterator. Dictionary value iterator. Creates a dictionary value iterator. Gets the enumerator. Gets the current value. Moves to the next value. Disposes the iterator. Various LinQ extensions. Calls an action on each item before yielding them. The collection. The action to call for each item. Perform an action on each item. The source. The action to perform. Perform an action on each item. The source. The action to perform. Convert each item in the collection. The collection. Func to convert the items. Convert a colletion to a HashSet. Convert a colletion to a HashSet. Convert a collection to an immutable list. The collection. Add an item to the beginning of a collection. The collection. Func to create the item to prepend. Add an item to the beginning of a collection. The collection. The item to prepend. Add a collection to the beginning of another collection. The collection. The collection to prepend. Add an item to the beginning of another collection, if a condition is met. The collection. The condition. Func to create the item to prepend. Add an item to the beginning of another collection, if a condition is met. The collection. The condition. The item to prepend. Add a collection to the beginning of another collection, if a condition is met. The collection. The condition. The collection to prepend. Add an item to the beginning of another collection, if a condition is met. The collection. The condition. Func to create the item to prepend. Add an item to the beginning of another collection, if a condition is met. The collection. The condition. The item to prepend. Add a collection to the beginning of another collection, if a condition is met. The collection. The condition. The collection to prepend. Add an item to the beginning of another collection, if a condition is met. The collection. The condition. Func to create the item to prepend. Add an item to the beginning of another collection, if a condition is met. The collection. The condition. The item to prepend. Add a collection to the beginning of another collection, if a condition is met. The collection. The condition. The collection to prepend. Add an item to the end of a collection. The collection. Func to create the item to append. Add an item to the end of a collection. The collection. The item to append. Add a collection to the end of another collection. The collection. The collection to append. Add an item to the end of a collection if a condition is met. The collection. The condition. Func to create the item to append. Add an item to the end of a collection if a condition is met. The collection. The condition. The item to append. Add a collection to the end of another collection if a condition is met. The collection. The condition. The collection to append. Add an item to the end of a collection if a condition is met. The collection. The condition. Func to create the item to append. Add an item to the end of a collection if a condition is met. The collection. The condition. The item to append. Add a collection to the end of another collection if a condition is met. The collection. The condition. The collection to append. Returns and casts only the items of type . The collection. Adds a collection to a hashset. The hashset. The collection. Returns true if the list is either null or empty. Otherwise false. The list. Sets all items in the list to the given value. The list. The value. Adds the elements of the specified collection to the end of the IList<T>. Sorts an IList Sorts an IList MemberInfo method extensions. Returns true if the attribute whose type is specified by the generic argument is defined on this member Returns true if the attribute whose type is specified by the generic argument is defined on this member Returns the first found custom attribute of type T on this member Returns null if none was found Returns the first found non-inherited custom attribute of type T on this member Returns null if none was found Gets all attributes of the specified generic type. The member. Gets all attributes of the specified generic type. The member. If true, specifies to also search the ancestors of element for custom attributes. Gets all attribute instances defined on a MemeberInfo. The member. Gets all attribute instances on a MemberInfo. The member. If true, specifies to also search the ancestors of element for custom attributes. If this member is a method, returns the full method name (name + params) otherwise the member name paskal splitted Determines whether a FieldInfo, PropertyInfo or MethodInfo is static. The member. true if the specified member is static; otherwise, false. Determines whether the specified member is an alias. The member to check. true if the specified member is an alias; otherwise, false. Returns the original, backing member of an alias member if the member is an alias. The member to check. /// if set to true an exception will be thrown if the member is not aliased. The member was not aliased; this only occurs if throwOnNotAliased is true. Various extensions for MethodInfo. Returns the specified method's full name "methodName(argType1 arg1, argType2 arg2, etc)" Uses the specified gauntlet to replaces type names, ex: "int" instead of "Int32" Returns a string representing the passed method parameters names. Ex "int num, float damage, Transform target" Returns the specified method's full name. Tests if a method is an extension method. Determines whether the specified method is an alias. The method to check. true if the specified method is an alias; otherwise, false. Returns the original, backing method of an alias method if the method is an alias. The method to check. /// if set to true an exception will be thrown if the method is not aliased. The method was not aliased; this only occurs if throwOnNotAliased is true. Determines the type of operator. The == operator. The != operator. The + operator. The - operator. The * operator. The / operator. The < operator. The > operator. The <= operator. The >= operator. The % operator. The >> operator. The << operator. The & operator. The | operator. The ^ operator. The ~ operator. The && operator. The || operator. The ! operator. DirectoryInfo method extensions. Gets the name of the directory. Always returns forward slash seperators as opposed to Path.GetDirectoryName(). Determines whether the directory has a given directory in its hierarchy of children. The parent directory. The sub directory. Finds a parent directory with a given name, or null if no such parent directory exists. Returns a value indicating whether or not a path can be made relative to another. The parent path. The path to make relative to the parent path. A value indicating if the path can be made relative to the parent path. Returns a path string to path that is relative to the parent path. The parent path. The path to make relative to the parent path. A relative path from parent path to path. Tries to make a path that is relative from parent path to path. The parent path. The path to make relative to the parent path. A relative path from parent path to path. null if no relative path could be made. A value indicating if the method succeeded in making a relative path. Combines two paths, and replaces all backslases with forward slash. PropertyInfo method extensions. Determines whether a property is an auto property. Determines whether the specified property is an alias. The property to check. true if the specified property is an alias; otherwise, false. Returns the original, backing property of an alias property if the property is an alias. The property to check. /// if set to true an exception will be thrown if the property is not aliased. The property was not aliased; this only occurs if throwOnNotAliased is true. Defines a collection of handy Rect transformation methods, that can chained together for complex behaviour. Note that no method defined here changes the original Rect, but instead returns a new transformed Rect. Returns a Rect with the specified width. The original Rect. The desired width of the new Rect. Returns a Rect with the specified height. The original Rect. The desired height of the new Rect. Returns a Rect with the specified size. The original Rect. The desired width of the new Rect. The desired height of the new Rect. Returns a Rect with the specified size. The original Rect. The desired size of the new Rect. Returns a Rect that has been inserted by the specified amount on the X-axis. The original Rect. The desired padding. Returns a Rect that has been inserted by the specified amount on the X-axis. The original Rect. Desired padding on the left side. Desired padding on the right side. Returns a Rect that has been inserted by the specified amount on the Y-axis. The original Rect. The desired padding. Returns a Rect that has been inserted by the specified amount on the Y-axis. The original Rect. The desired padding on the top. The desired padding on the bottom. Returns a Rect that has been inserted by the specified amount. The original Rect. The desired padding. Returns a Rect that has been inserted by the specified amount. The original Rect. The desired horizontal padding. The desired vertical padding. Returns a Rect that has been inserted by the specified amount. The original Rect. The desired padding on the left. The desired padding on the right. The desired padding on the top. The desired padding on the bottom. Returns a Rect, with the specified width, that has been aligned to the left of the original Rect. The original Rect. The desired width of the new Rect. Returns a Rect, with the specified width, that has been aligned to horizontal center of the original Rect. The original Rect. The desired width of the new Rect. Returns a Rect, with the specified width and height in the center of the provided rect. The original Rect. The desired width of the new Rect. The desired height of the new Rect. Returns a Rect, with the specified width, that has been aligned to the right of the original Rect. The original Rect. The desired width of the new Rect. Returns a Rect, with the specified width, that has been aligned to the right of the original Rect. Returns a Rect, with the specified height, that has been aligned to the top of the original Rect. The original Rect. The desired height of the new Rect. Returns a Rect, with the specified height, that has been aligned to the vertical middle of the original Rect. The original Rect. The desired height of the new Rect. Returns a Rect, with the specified height, that has been aligned to the bottom of the original Rect. The original Rect. The desired height of the new Rect. Returns a Rect, with the specified width, that has been aligned horizontally to the center of the original rect. The original Rect. The desired width of the new Rect. Returns a Rect, with the specified height, that has been aligned vertically to the center of the original rect. The original Rect. The desired height of the new Rect. Returns a Rect, with the specified width and height, that has been aligned horizontally and vertically to the center of the original rect. The original Rect. The desired width and height of the new Rect. Returns a Rect, with the specified width and height, that has been aligned horizontally and vertically to the center of the original rect. The original Rect. The desired width of the new Rect. The desired height of the new Rect. Returns a Rect that has been expanded by the specified amount. The original Rect. The desired expansion. Returns a Rect that has been expanded by the specified amount. The original Rect. The desired expansion on the X-axis. The desired expansion on the Y-axis. Returns a Rect that has been expanded by the specified amount. The original Rect. The desired expansion on the left. The desired expansion on the right. The desired expansion on the top. The desired expansion on the bottom. Splits a Rect horizontally into the specified number of sub-rects, and returns a sub-rect for the specified index. The original Rect. The index for the subrect. Includes 0, and excludes count. The amount of subrects the Rect should be split into. Splits a Rect vertically into the specified number of sub-rects, and returns a sub-rect for the specified index. The original Rect. The index for the subrect. Includes 0, and excludes count. The amount of subrects the Rect should be split into. Splits a Rect into a grid from left to right and then down. The original rect. The width of a grid cell. The height of a grid cell. The index of the grid cell. Splits a Rect into a grid from left to right and then down. Moves a Rect to the specified center X position. The original Rect. The desired center x position. Moves a Rect to the specified center Y position. The desired original Rect. The desired desired center y position. Moves a Rect to the specified center position. The original Rect. The desired center X position. The desired center Y position. Moves a Rect to the specified center position. The original Rect. The desired center position. Moves a Rect to the specified position. The orignal Rect. The desired position. Resets a Rect's position to zero. The original Rect. Moves a Rect's position by the specified amount. The original Rect. The change in position. Moves a Rect's position by the specified amount. The original Rect. The x. The y. Sets a Rect's X position. The original Rect. The desired X position. Adds to a Rect's X position. The original Rect. The value to add. Subtracts from a Rect's X position. The original Rect. The value to subtract. Sets a Rect's Y position. The original Rect. The desired Y position. Adds to a Rect's Y position. The original Rect. The value to add. Subtracts a Rect's Y position. The original Rect. The value to subtract. Sets the min position of a Rect. The original Rect. The desired min position. Adds to a Rect's min position. The original rect. The value to add. Subtracts a Rect's min position. The original Rect. The vlaue to subtract. Sets a Rect's max position. The original Rect. The desired max position. Adds to a Rect's max position. The original Rect. The value to add. Subtracts a Rect's max position. The original Rect. The value to add. Sets a Rect's X min position. The original Rect. The desired min X position. Adds to a Rect's X min position. The original Rect. The value to add. Subtracts from a Rect's X min position. The original Rect. The value to subtract. Sets a Rect's X max position. The original Rect. The desired X max position. Adds to a Rect's X max position. The original Rect. The value to add. Subtracts a Rect's X max position. The original Rect. The value to subtract. Sets a Rect's Y min position. The original Rect. The desired Y min. Adds to a Rect's Y min position. The original Rect. The value to add. Subtracts a Rect's Y min position. The original Rect. The value to subtract. Sets a Rect's Y max position. The original Rect. The desired Y max position. Adds to a Rect's Y max position. The original Rect. The value to add. Subtracts from a Rect's Y max position. The original Rect. The value to subtract. Sets a Rect's width, if it is less than the specified value. The original Rect. The desired min width. Sets a Rect's width, if it is greater than the specified value. The original Rect. The desired max width. Sets a Rect's height, if it is less than the specified value. The original Rect. The desired min height. Sets a Rect's height, if it is greater than the specified value. The original Rect. The desired max height. Expands a rect to contain a given position. The original Rect. The position to expand the rect towards. String method extensions. Eg MY_INT_VALUE => MyIntValue Returns whether or not the specified string is contained with this string Ex: "thisIsCamelCase" -> "This Is Camel Case" Returns true if this string is null, empty, or contains only whitespace. The string to check. true if this string is null, empty, or contains only whitespace; otherwise, false. Type method extensions. Type name alias lookup. TypeNameAlternatives["Single"] will give you "float", "UInt16" will give you "ushort", "Boolean[]" will give you "bool[]" etc.. Checks whether a given string is a valid CSharp identifier name. This also checks full type names including namespaces. The identifier to check. Determines whether a type can be casted to another type. From. To. if set to true an implicit or explicit operator must be defined on the given type. If a type can be casted to another type, this provides a function to manually convert the type. From. To. if set to true an implicit or explicit operator must be defined on the given type. If a type can be casted to another type, this provides a function to manually convert the type. if set to true an implicit or explicit operator must be defined on the given type. If a type can be casted to another type, this provides the method info of the method in charge of converting the type. From. To. if set to true an implicit or explicit operator must be defined on the given type. Gets an equality comparer delegate used to compare the equality of values of a given type. In order, this will be: 1. The == operator, if one is defined on the type. 2. A delegate that uses , if the type implements that interface. 3. .NET's own Note that in the special case of the type , a special equality comparer is returned that only checks whether all the Quaternion components are equal. This is because, by default, Quaternion's equality operator is broken when operating on invalid quaternions; "default(Quaternion) == default(Quaternion)" evaluates to false, and this causes a multitude of problems. Special delegates are also returned for float and double, that consider float.NaN to be equal to float.NaN, and double.NaN to be equal to double.NaN. Gets the first attribute of type T. Returns null in the no attribute of type T was found. The type. If true, specifies to also search the ancestors of element for custom attributes. Determines whether a type implements or inherits from another type. The type. To. Determines whether a type implements an open generic interface or class such as IList<> or List<>. Type of the candidate. Type of the open generic type. Determines whether a type implements an open generic interface such as IList<>. Type of the candidate. Type of the open generic interface. Type " + openGenericInterfaceType.Name + " is not a generic type definition and an interface. Determines whether a type implements an open generic class such as List<>. Type of the candidate. Type of the open generic interface. Gets the generic arguments of an inherited open generic class or interface. Type of the candidate. The open generic type to get the arguments of. Gets the generic arguments of an inherited open generic class. Type of the candidate. Type of the open generic class. Gets the generic arguments of an inherited open generic interface. Type of the candidate. Type of the open generic interface. Gets the MethodInfo of a specific operator kind, with the given left and right operands. This overload is *far* faster than any of the other GetOperatorMethod implementations, and should be used whenever possible. Gets the MethodInfo of a specific operator type. Gets the MethodInfo of a specific operator type. Gets all members from a given type, including members from all base types if the flag isn't set. Gets all members from a given type, including members from all base types. Gets all members of a specific type from a type, including members from all base types, if the flag isn't set. Gets the generic type definition of an open generic base type. Gets the generic type definition of an open generic base type. Returns a lazy enumerable of all the base types of this type including interfaces and classes Returns a lazy enumerable of all the base classes of this type Used to filter out unwanted type names. Ex "int" instead of "Int32" Returns a nicely formatted name of a type. Returns a nicely formatted full name of a type. Gets the name of the compilable nice. The type. Gets the full name of the compilable nice. The type. Returns the first found custom attribute of type T on this type Returns null if none was found Returns the first found non-inherited custom attribute of type T on this type Returns null if none was found Gets all attributes of type T. The type. Gets all attributes of type T. The type If true, specifies to also search the ancestors of element for custom attributes. Returns true if the attribute whose type is specified by the generic argument is defined on this type Returns true if the attribute whose type is specified by the generic argument is defined on this type Determines whether a type inherits or implements another type. Also include support for open generic base types such as List<>. Determines whether a type inherits or implements another type. Also include support for open generic base types such as List<>. Gets the number of base types between given type and baseType. Determines whether a method has the specified parameter types. FieldInfo will return the fieldType, propertyInfo the PropertyType, MethodInfo the return type and EventInfo will return the EventHandlerType. The MemberInfo. Gets the value contained in a given . Currently only and is supported. The to get the value of. The instance to get the value from. The value contained in the given . Can't get the value of the given type. Sets the value of a given MemberInfo. Currently only and is supported. The to set the value of. The object to set the value on. The value to set. Property has no setter or Can't set the value of the given type. // Tries to infer a set of valid generic parameters for a generic type definition, given a subset of known parameters. The generic type definition to attempt to infer parameters for. The inferred parameters, if inferral was successful. The known parameters to infer from. True if the parameters could be inferred, otherwise, false. genericTypeDefinition is null or knownParameters is null The genericTypeDefinition parameter must be a generic type definition. Checks whether an array of types satisfy the constraints of a given generic type definition. If this method returns true, the given parameters can be safely used with with the given generic type definition. The generic type definition to check. The parameters to check validity for. genericType is null or types is null The genericType parameter must be a generic type definition. Checks whether an array of types satisfy the constraints of a given generic method definition. If this method returns true, the given parameters can be safely used with with the given generic method definition. The generic method definition to check. The parameters to check validity for. genericType is null or types is null The genericMethod parameter must be a generic method definition. Before calling this method we must ALWAYS hold a lock on the GenericConstraintsSatisfaction_LOCK object, as that is an implicit assumption it works with. Not yet documented. Formats a string with the specified generic parameter constraints on any given type. Example output: where T : class Determines whether a generic type contains the specified generic argument constraints. The type. The generic argument types. Determines whether a type is a fully constructed generic type. Determines whether a type is nullable by ensuring the type is neither a PrimitiveType, ValueType or an Enum. Gets the enum bitmask in a ulong. enumType Gets a value indicating if the string is a reserved C# keyword. The identifier to check. true if the string is a C# keyword. Otherwise false. Extends various Unity classes. Determines whether a Unity object is null or "fake null", without ever calling Unity's own equality operators. This method is useful for checking if a Unity object is null, destroyed or missing at times when it is not allowed to call Unity's own equality operators, for example when not running on the main thread. The Unity object to check. True if the object is null, missing or destroyed; otherwise false. Contains utilities for operating on arrays. Creates a new array with an added element. The element type of the array. The array. The value to add. The new array. The given array was null. Creates a new array with an element inserted at a given index. The element type of the array. The array. The index to insert at. The value to insert. The given array was null. The index to insert at was out of range. Creates a new array with an element removed. The element type of the array. The array. The index to remove an element at. The given array was null. The given index to remove an element at was out of range. Utility class for asset Guid script Tries to update the Guid of a specified asset with the Guid from a specified script type. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Provides utilities for using the namespace. This class is due for refactoring. Use at your own peril. Gets a value indicating whether emitting is supported on the current platform. true if the current platform can emit; otherwise, false. Creates a delegate which gets the value of a field. If emitting is not supported on the current platform, the delegate will use reflection to get the value. The type of the field to get a value from. The instance describing the field to create a getter for. A delegate which gets the value of the given field. The fieldInfo parameter is null. Creates a delegate which gets the value of a field. If emitting is not supported on the current platform, the delegate will use reflection to get the value. The instance describing the field to create a getter for. A delegate which gets the value of the given field. The fieldInfo parameter is null. Creates a delegate which sets the value of a field. If emitting is not supported on the current platform, the delegate will use reflection to set the value. The type of the field to set a value to. The instance describing the field to create a setter for. A delegate which sets the value of the given field. The fieldInfo parameter is null. Creates a delegate which sets the value of a field. If emitting is not supported on the current platform, the delegate will use reflection to set the value. The instance describing the field to create a setter for. A delegate which sets the value of the given field. The fieldInfo parameter is null. Creates a delegate which gets the value of a field. If emitting is not supported on the current platform, the delegate will use reflection to get the value. The type of the instance to get a value from. The type of the field to get a value from. The instance describing the field to create a getter for. A delegate which gets the value of the given field. The fieldInfo parameter is null. Creates a delegate which gets the value of a field from a weakly typed instance of a given type. If emitting is not supported on the current platform, the delegate will use reflection to get the value. The type of the field to get a value from. The of the instance to get a value from. The instance describing the field to create a getter for. A delegate which gets the value of the given field. The fieldInfo parameter is null. Creates a delegate which gets the weakly typed value of a field from a weakly typed instance of a given type. If emitting is not supported on the current platform, the delegate will use reflection to get the value. The of the instance to get a value from. The instance describing the field to create a getter for. A delegate which gets the value of the given field. The fieldInfo parameter is null. Creates a delegate which sets the value of a field. If emitting is not supported on the current platform, the delegate will use reflection to set the value. The type of the instance to set a value on. The type of the field to set a value to. The instance describing the field to create a setter for. A delegate which sets the value of the given field. The fieldInfo parameter is null. Creates a delegate which sets the value of a field on a weakly typed instance of a given type. If emitting is not supported on the current platform, the delegate will use reflection to set the value. The type of the field to set a value to. Type of the instance. The instance describing the field to create a setter for. A delegate which sets the value of the given field. The fieldInfo parameter is null. Field cannot be static. Creates a delegate which sets the weakly typed value of a field on a weakly typed instance of a given type. If emitting is not supported on the current platform, the delegate will use reflection to set the value. Type of the instance. The instance describing the field to create a setter for. A delegate which sets the value of the given field. The fieldInfo parameter is null. Field cannot be static. Creates a delegate which gets the weakly typed value of a field from a weakly typed instance of a given type. If emitting is not supported on the current platform, the delegate will use reflection to get the value. The of the instance to get a value from. The instance describing the field to create a getter for. A delegate which gets the value of the given field. The fieldInfo parameter is null. Creates a delegate which sets the weakly typed value of a property on a weakly typed instance of a given type. If emitting is not supported on the current platform, the delegate will use reflection to set the value. Type of the instance. The instance describing the property to create a setter for. A delegate which sets the value of the given field. The fieldInfo parameter is null. Property cannot be static. Creates a delegate which sets the value of a property. If emitting is not supported on the current platform, the delegate will use reflection to set the value. The type of the property to set a value to. The instance describing the property to create a setter for. A delegate which sets the value of the given property. The propertyInfo parameter is null. Creates a delegate which gets the value of a property. If emitting is not supported on the current platform, the delegate will use reflection to get the value. The type of the property to get a value from. The instance describing the property to create a getter for. A delegate which gets the value of the given property. The propertyInfo parameter is null. Creates a delegate which sets the value of a property. If emitting is not supported on the current platform, the delegate will use reflection to set the value. The type of the instance to set a value on. The type of the property to set a value to. The instance describing the property to create a setter for. A delegate which sets the value of the given property. The propertyInfo parameter is null. Creates a delegate which gets the value of a property. If emitting is not supported on the current platform, the delegate will use reflection to get the value. The type of the instance to get a value from. The type of the property to get a value from. The instance describing the property to create a getter for. A delegate which gets the value of the given property. The propertyInfo parameter is null. Creates a fast delegate method which calls a given parameterless instance method and returns the result. The type of the class which the method is on. The type which is returned by the given method info. The method info instance which is used. A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke. Creates a fast delegate method which calls a given parameterless static method. The method info instance which is used. A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke. Creates a fast delegate method which calls a given parameterless weakly typed instance method. The method info instance which is used. A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke. Not yet documented. Creates a fast delegate method which calls a given weakly typed instance method with one argument and returns a value. The type of the result. The type of the first argument. The method info instance which is used. A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke. methodInfo Given method ' + methodInfo.Name + ' is static when it has to be an instance method. or Given method ' + methodInfo.Name + ' must return type + typeof(TResult) + . or Given method ' + methodInfo.Name + ' must have exactly one parameter. or The first parameter of the method ' + methodInfo.Name + ' must be of type + typeof(TArg1) + . Not yet documented. Not yet documented. Creates a fast delegate method which calls a given parameterless instance method. The type of the class which the method is on. The method info instance which is used. A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke. Creates a fast delegate method which calls a given instance method with a given argument. The type of the class which the method is on. The type of the argument with which to call the method. The method info instance which is used. A delegate which calls the method and returns the result, except it's hundreds of times faster than MethodInfo.Invoke. This class encapsulates common combinations. Search criteria encompassing all public and non-public members, including base members. Note that you also need to specify either the Instance or Static flag. Search criteria encompassing all public instance members, including base members. Search criteria encompassing all non-public instance members, including base members. Search criteria encompassing all public and non-public instance members, including base members. Search criteria encompassing all public static members, including base members. Search criteria encompassing all non-public static members, including base members. Search criteria encompassing all public and non-public static members, including base members. Search criteria encompassing all public instance members, excluding base members. Search criteria encompassing all non-public instance members, excluding base members. Search criteria encompassing all public and non-public instance members, excluding base members. Search criteria encompassing all public static members, excluding base members. Search criteria encompassing all non-public static members, excluding base members. Search criteria encompassing all public and non-public static members, excluding base members. Search criteria encompassing all members, including base and static members. Search criteria encompassing all members (public and non-public, instance and static), including base members. A GlobalConfig singleton, automatically created and saved as a ScriptableObject in the project at the specified path. This only happens if the UnityEditor is present. If it's not, a non-persistent ScriptableObject is created at run-time. Remember to locate the path within a resources folder if you want the config file to be loaded at runtime without the Unity editor being present. The asset path is specified by defining a . If no attribute is defined it will be saved in the root assets folder. [GlobalConfig("Assets/Resources/MyConfigFiles/")] public class MyGlobalConfig : GlobalConfig<MyGlobalConfig> { public int MyGlobalVariable; } void SomeMethod() { int value = MyGlobalConfig.Instance.MyGlobalVariable; } Gets a value indicating whether this instance has instance loaded. Gets the singleton instance. Tries to load the singleton instance. Opens the config in a editor window. This is currently only used internally by the Sirenix.OdinInspector.Editor assembly. This attribute is used by classes deriving from GlobalConfig and specifies the asset path for the generated config file. Gets the full asset path including Application.dataPath. Only relevant if IsInResourcesFolder is false. Gets the relative asset path. Only relevant if IsInResourcesFolder is false. Gets the resources path. Only relevant if IsInResourcesFolder is true. Whether the config should be associated with an asset in the project. If false, no config asset will be generated or loaded, and a new "temporary" config instance will be created for every reload. This is true by default. Gets a value indicating whether this asset is located within a resource folder. Initializes a new instance of the class. Initializes a new instance of the class. The relative asset. Remember to locate the path within a resources folder if you want the config file to be loaded at runtime without the Unity Editor. GUILayoutOptions is a handy utility that provides cached GUILayoutOpion arrays based on the wanted parameters. Most GUILayout and EditorGUILayout methods takes an optional "params GUILayoutOption[]" parameter. Each time you call this, an array is allocated generating garbage. // Generates garbage: GUILayout.Label(label, GUILayout.Label(label, GUILayout.Width(20), GUILayout.ExpandHeight(), GUILayout.MaxWidth(300))); // Does not generate garbage: GUILayout.Label(label, GUILayout.Label(label, GUILayoutOptions.Width(20).ExpandHeight().MaxWidth(300))); An EmptyGUIOption[] array with a length of 0. A GUILayoutOptions instance with an implicit operator to be converted to a GUILayoutOption[] array. Gets or creates the cached GUILayoutOption array based on the layout options specified. Option passed to a control to give it an absolute width. Option passed to a control to give it an absolute height. Option passed to a control to specify a maximum height. Option passed to a control to specify a maximum width. Option passed to a control to specify a minimum height. Option passed to a control to specify a minimum width. Option passed to a control to allow or disallow vertical expansion. Option passed to a control to allow or disallow horizontal expansion. Determines whether the instance is equals another instance. Returns a hash code for this instance. Option passed to a control to give it an absolute width. Option passed to a control to give it an absolute height. Option passed to a control to specify a maximum height. Option passed to a control to specify a maximum width. Option passed to a control to specify a minimum width. Option passed to a control to specify a minimum height. Option passed to a control to allow or disallow vertical expansion. Option passed to a control to allow or disallow horizontal expansion. Immutable hashset wraps another hashset, and allows for reading the inner hashset, without the ability to change it. Creates an immutable hashset around another hashset. Returns true if the item is contained in the list. The item's value. Gets the enumerator. Gets the enumerator. Interface for immutable list. Interface for generic immutable list. Index accessor. Immutable list wraps another list, and allows for reading the inner list, without the ability to change it. Creates an immutable list around another list. Number of items in the list. Immutable list cannot be changed directly, so it's size is always fixed. Immutable list are always readonly. Returns true if the inner list is synchronized. Gets the sync root object. Index accessor. Index. Returns true if the item is contained in the list. The item's value. Copy the list to an array, Target array. Index. Copy the list to an array, Target array. Index. Gets an enumerator. Get the index of a value. The item's value. Immutable list cannot be edited. Index. Immutable list cannot be edited. Index. Item. Immutable list cannot be edited. Item. Immutable list cannot be edited. Immutable list cannot be edited. Item. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Immutable list wraps another list, and allows for reading the inner list, without the ability to change it. Creates an immutable list around another list. Number of items in the list. Immutable list are always readonly. Index accessor. Index. Returns true if the item is contained in the list. Copies the list to an array. Gets an enumerator. Gets the index of an item. Various list extension methods. Increases or decrease the number of items in the list to the specified count. The list. The new length. Increases or decrease the number of items in the list to the specified count. The list. The new length. Value of new elements. Increases or decrease the number of items in the list to the specified count. The list. The new length. Increases or decrease the number of items in the list to the specified count. The list. The new length. Value of new elements. Collection of math function. Distance from a point to a line. Returns a smooth value between start and end based on t. First point. Second point. Position between 0 and 1. Returns a smooth value between start and end based on t. First point. Second point. Position between 0 and 1. Number of interpolations to make. Returns the fractional of the value. The value to get the fractional of. Returns the fractional of the value. The value to get the fractional of. Returns the fractional of the value. The value to get the fractional of. Returns a value based on t, that bounces faster and faster. The value to bounce. Returns a smooth value between 0 and 1 based on t. Position between 0 and 1. Returns a smooth value between 0 and 1 based on t. Position between 0 and 1. Number of interpolations to make. Returns an unclamped linear interpolation of two vectors. The first vector. The second vector. The interpolation factor. Returns an unclamped linear interpolation of two vectors. The first vector. The second vector. The interpolation factor. Returns a value that bounces between 0 and 1 based on value. The value to bounce. Returns a value that eases in elasticly. The value to ease in elasticly. The amplitude. The length. Pows each element of the vector. The vector. The power. Returns a Vector2 with each element set to their respective sign. The vector to sign. Returns a Vector3 with each element set to their respective sign. The vector to sign. Returns a value that eases out elasticly. The value to ease out elasticly. The amplitude. The length. Returns a smooth value betweeen that peaks at t=0.5 and then comes back down again. A value between 0 and 1. Clamps the value of a Vector3. The vector to clamp. The min value. The max value. Clamps the value of a Vector2. The vector to clamp. The min value. The max value. Computes a hash for a byte array. The byte array. Gives a smooth path between a collection of points. The collection of point. The current position in the path. 0 is at the start of the path, 1 is at the end of the path. Checks if two given lines intersect with one another and returns the intersection point (if any) in an out parameter. Source: http://stackoverflow.com/questions/3746274/line-intersection-with-aabb-rectangle. Edited to implement Cohen-Sutherland type pruning for efficiency. Starting point of line a. Ending point of line a. Starting point of line b. Ending point of line b. The out parameter which contains the intersection point if there was any. True if the two lines intersect, otherwise false. Returns the collision point between two infinite lines. Distance from line to plane. Position of the plane. Surface normal of the plane. Origin of the line. Line direction normal. Distance from ray to plane. The ray. The plane. Rotates a Vector2 by an angle. The point to rotate. The angle to rotate. Rotates a Vector2 around a point by an angle.. The point to rotate. The point to rotate around. The angle to rotate. Interpolates t between a and b to a value between 0 and 1 using a Hermite polynomial. The first value. The second value. The position value. A smoothed value between 0 and 1. Interpolates t between a and b to a value between 0 and 1. The first value. The second value. The position value. Linear value between 0 and 1. Wraps a value between min and max. The value to wrap. The minimum value. The maximum value. Wraps a value between min and max. The value to wrap. The minimum value. The maximum value. Wraps a value between min and max. The value to wrap. The minimum value. The maximum value. Rounds a number based on a mininum difference. The value to round. The min difference. The rounded value. Discards the least significant demicals. The value of insignificant decimals. Value with significant decimals. Clamps and wraps an angle between two values. Contains utilities for operating on arrays multi-dimentional arrays. Inserts one column left of the specified column index. The type of the element. Index of the column. The array. Inserts one column right of the specified column index. The type of the element. Index of the column. The arr. Inserts one row above the specified row index. The type of the element. The array. The row index. Inserts one row below the specified row index. The type of the element. The array. Index of the row. Duplicates the column. The type of the element. Index of the column. The array. Duplicates the row. The type of the element. The array. Index of the row. Moves a column. The type of the element. The array. From column. To column. Moves a row. The type of the element. The array. From row. To row. Deletes a column. The type of the element. The array. Index of the column. Deletes the row. The type of the element. The array. Index of the row. Indicates a persistent assembly. Provides a methods of representing imaginary fields which are unique to serialization. We aggregate the FieldInfo associated with this member and return a mangled form of the name. The default fake name separator string. Initializes a new instance of the class. The field to alias. The name prefix to use. Initializes a new instance of the class. The field to alias. The name prefix to use. The separator string to use. Gets the aliased field. The aliased field. Gets the module in which the type that declares the member represented by the current is defined. Gets a value that identifies a metadata element. Gets the name of the current member. Gets the class that declares this member. Gets the class object that was used to obtain this instance of MemberInfo. Gets the type of the field. The type of the field. Gets a RuntimeFieldHandle, which is a handle to the internal metadata representation of a field. Gets the attributes. The attributes. When overridden in a derived class, returns an array of all custom attributes applied to this member. True to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks. An array that contains all the custom attributes applied to this member, or an array with zero elements if no attributes are defined. When overridden in a derived class, returns an array of custom attributes applied to this member and identified by . The type of attribute to search for. Only attributes that are assignable to this type are returned. True to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks. An array of custom attributes applied to this member, or an array with zero elements if no attributes assignable to have been applied. When overridden in a derived class, indicates whether one or more attributes of the specified type or of its derived types is applied to this member. The type of custom attribute to search for. The search includes derived types. True to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks. True if one or more instances of or any of its derived types is applied to this member; otherwise, false. Gets the value of the field. The object instance to get the value from. The value of the field. When overridden in a derived class, sets the value of the field supported by the given object. The object whose field value will be set. The value to assign to the field. A field of Binder that specifies the type of binding that is desired (for example, Binder.CreateInstance or Binder.ExactBinding). A set of properties that enables the binding, coercion of argument types, and invocation of members through reflection. If is null, then Binder.DefaultBinding is used. The software preferences of a particular culture. Provides a methods of representing aliased methods. In this case, what we're representing is a method on a parent class with the same name. We aggregate the MethodInfo associated with this member and return a mangled form of the name. The name that we return is "parentname+methodName". The default fake name separator string. Initializes a new instance of the class. The method to alias. The name prefix to use. Initializes a new instance of the class. The method to alias. The name prefix to use. The separator string to use. Gets the aliased method. The aliased method. Gets the custom attributes for the return type. Gets a handle to the internal metadata representation of a method. Gets the attributes associated with this method. Gets the class that declares this member. Gets the name of the current member. Gets the class object that was used to obtain this instance of MemberInfo. When overridden in a derived class, returns the MethodInfo object for the method on the direct or indirect base class in which the method represented by this instance was first declared. A MethodInfo object for the first implementation of this method. When overridden in a derived class, returns an array of all custom attributes applied to this member. true to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks. An array that contains all the custom attributes applied to this member, or an array with zero elements if no attributes are defined. When overridden in a derived class, returns an array of custom attributes applied to this member and identified by . The type of attribute to search for. Only attributes that are assignable to this type are returned. true to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks. An array of custom attributes applied to this member, or an array with zero elements if no attributes assignable to have been applied. When overridden in a derived class, returns the flags. The MethodImplAttributes flags. When overridden in a derived class, gets the parameters of the specified method or constructor. An array of type ParameterInfo containing information that matches the signature of the method (or constructor) reflected by this MethodBase instance. When overridden in a derived class, invokes the reflected method or constructor with the given parameters. The object on which to invoke the method or constructor. If a method is static, this argument is ignored. If a constructor is static, this argument must be null or an instance of the class that defines the constructor. A bitmask that is a combination of 0 or more bit flags from . If is null, this parameter is assigned the value ; thus, whatever you pass in is ignored. An object that enables the binding, coercion of argument types, invocation of members, and retrieval of MemberInfo objects via reflection. If is null, the default binder is used. An argument list for the invoked method or constructor. This is an array of objects with the same number, order, and type as the parameters of the method or constructor to be invoked. If there are no parameters, this should be null.If the method or constructor represented by this instance takes a ByRef parameter, there is no special attribute required for that parameter in order to invoke the method or constructor using this function. Any object in this array that is not explicitly initialized with a value will contain the default value for that object type. For reference-type elements, this value is null. For value-type elements, this value is 0, 0.0, or false, depending on the specific element type. An instance of CultureInfo used to govern the coercion of types. If this is null, the CultureInfo for the current thread is used. (This is necessary to convert a String that represents 1000 to a Double value, for example, since 1000 is represented differently by different cultures.) An Object containing the return value of the invoked method, or null in the case of a constructor, or null if the method's return type is void. Before calling the method or constructor, Invoke checks to see if the user has access permission and verifies that the parameters are valid.CautionElements of the array that represent parameters declared with the ref or out keyword may also be modified. When overridden in a derived class, indicates whether one or more attributes of the specified type or of its derived types is applied to this member. The type of custom attribute to search for. The search includes derived types. true to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks. true if one or more instances of or any of its derived types is applied to this member; otherwise, false. Provides a methods of representing imaginary properties which are unique to serialization. We aggregate the PropertyInfo associated with this member and return a mangled form of the name. The default fake name separator string. Initializes a new instance of the class. The property to alias. The name prefix to use. Initializes a new instance of the class. The property to alias. The name prefix to use. The separator string to use. Not yet documented. Gets the module in which the type that declares the member represented by the current is defined. Gets a value that identifies a metadata element. Gets the name of the current member. Gets the class that declares this member. Gets the class object that was used to obtain this instance of MemberInfo. Gets the type of the property. The type of the property. Gets the attributes. The attributes. Gets a value indicating whether this instance can read. true if this instance can read; otherwise, false. Gets a value indicating whether this instance can write. true if this instance can write; otherwise, false. When overridden in a derived class, returns an array of all custom attributes applied to this member. True to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks. An array that contains all the custom attributes applied to this member, or an array with zero elements if no attributes are defined. When overridden in a derived class, returns an array of custom attributes applied to this member and identified by . The type of attribute to search for. Only attributes that are assignable to this type are returned. True to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks. An array of custom attributes applied to this member, or an array with zero elements if no attributes assignable to have been applied. When overridden in a derived class, indicates whether one or more attributes of the specified type or of its derived types is applied to this member. The type of custom attribute to search for. The search includes derived types. True to search this member's inheritance chain to find the attributes; otherwise, false. This parameter is ignored for properties and events; see Remarks. True if one or more instances of or any of its derived types is applied to this member; otherwise, false. Returns an array whose elements reflect the public and, if specified, non-public get, set, and other accessors of the property reflected by the current instance. Indicates whether non-public methods should be returned in the MethodInfo array. true if non-public methods are to be included; otherwise, false. An array of objects whose elements reflect the get, set, and other accessors of the property reflected by the current instance. If is true, this array contains public and non-public get, set, and other accessors. If is false, this array contains only public get, set, and other accessors. If no accessors with the specified visibility are found, this method returns an array with zero (0) elements. When overridden in a derived class, returns the public or non-public get accessor for this property. Indicates whether a non-public get accessor should be returned. true if a non-public accessor is to be returned; otherwise, false. A MethodInfo object representing the get accessor for this property, if is true. Returns null if is false and the get accessor is non-public, or if is true but no get accessors exist. Gets the index parameters of the property. The index parameters of the property. When overridden in a derived class, returns the set accessor for this property. Indicates whether the accessor should be returned if it is non-public. true if a non-public accessor is to be returned; otherwise, false. Value Condition A object representing the Set method for this property. The set accessor is public.-or- is true and the set accessor is non-public. null is true, but the property is read-only.-or- is false and the set accessor is non-public.-or- There is no set accessor. Gets the value of the property on the given instance. The object to invoke the getter on. The to invoke with. The binder to use. The indices to use. The culture to use. The value of the property on the given instance. Sets the value of the property on the given instance. The object to set the value on. The value to set. The to invoke with. The binder to use. The indices to use. The culture to use. Paths to Sirenix assets. Path to Odin Inspector folder. Path to Sirenix assets folder. Path to Sirenix folder. Path to Sirenix assemblies. Path to Odin Inspector resources folder. Path to Odin Inspector configuration folder. Path to Odin Inspector resources configuration folder. Path to Odin Inspector temporary folder. This attribute is used by classes deriving from GlobalConfig and specifies the menu item path for the preference window and the asset path for the generated config file. The scriptable object created will be located at the OdinEditorConfigs path unless other is specified. Classes implementing this attribute will be part of the Odin Preferences window. Initializes a new instance of the class. This attribute is used by classes deriving from GlobalConfig and specifies the menu item path for the preference window and the asset path for the generated config file. The scriptable object created will be located at the OdinResourcesConigs path unless other is specified. Classes implementing this attribute will be part of the Odin Preferences window. Initializes a new instance of the class. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Compares two strings in a number-aware manner, IE, "[2] Foo" is considered to come before "[10] Bar". Utility class indicating current Unity version. Tests current Unity version is equal or greater. Minimum major version. Minimum minor version. true if the current Unity version is greater. Otherwise false. The current Unity version major. The current Unity version minor. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Not yet documented. Compares objects by reference only, ignoring equality operators completely. This is used by the property tree reference dictionaries to keep track of references. A default, cached instance of this generic variant of the reference equality comparer. Returns true if the object references are equal. Returns the result of the object's own GetHashCode method.