diff --git a/1.3/Assemblies/0Harmony.dll b/1.3/Assemblies/0Harmony.dll
index 8fe8dc5..3a1b6d4 100644
Binary files a/1.3/Assemblies/0Harmony.dll and b/1.3/Assemblies/0Harmony.dll differ
diff --git a/1.3/Assemblies/0Harmony.xml b/1.3/Assemblies/0Harmony.xml
index 639dee4..ba2f340 100644
--- a/1.3/Assemblies/0Harmony.xml
+++ b/1.3/Assemblies/0Harmony.xml
@@ -713,7 +713,7 @@
- The opcode
+ The opcode
@@ -721,11 +721,11 @@
- All labels defined on this instruction
+ All labels defined on this instruction
- All exception block boundaries defined on this instruction
+ All exception block boundaries defined on this instruction
@@ -882,6 +882,7 @@
Searches the current assembly for Harmony annotations and uses them to create patches
+ This method can fail to use the correct assembly when being inlined. It calls StackTrace.GetFrame(1) which can point to the wrong method/assembly. If you are unsure or run into problems, use PatchAll(Assembly.GetExecutingAssembly())
instead.
@@ -966,6 +967,18 @@
Gets all patched original methods in the appdomain
An enumeration of patched original methods/constructors
+
+
+ Gets the original method from a given replacement method
+ A replacement method, for example from a stacktrace
+ The original method/constructor or null if not found
+
+
+
+ Tries to get the method from a stackframe including dynamic replacement methods
+ The
+ For normal frames, frame.GetMethod() is returned. For frames containing patched methods, the replacement method is returned or null if no method can be found
+
Gets Harmony version for all active Harmony instances
@@ -1695,6 +1708,10 @@
Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type
+
+ Enumerates all assemblies in the current app domain, excluding visual studio assemblies
+ An enumeration of
+
Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise
The name
@@ -1712,6 +1729,10 @@
+
+ Enumerates all successfully loaded types in the current app domain, excluding visual studio assemblies
+ An enumeration of all in all assemblies, excluding visual studio assemblies
+
Applies a function going up the type hierarchy and stops at the first non-null result
Result type of func()
@@ -1979,7 +2000,8 @@
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The runtime instance to access the field (ignored and can be omitted for static fields)
A readable/assignable reference to the field
@@ -2002,11 +2024,13 @@
are allowed for this delegate, and the instance passed to such a delegate is ignored, this hardly matters.
- Similarly, is not required to be the field's field type, unless that type is a value type.
+ Similarly, is not required to be the field's field type, unless that type is a non-enum value type.
It can be a parent class (including object) or implemented interface of the field's field type. It cannot be a derived class.
This variance is not allowed for value types, since that would require boxing/unboxing, which is not allowed for ref values.
+ Special case for enum types: can also be the underlying integral type of the enum type.
Specifically, for reference types, must be assignable from
- the field's field type; and for value types, must be exactly the field's field type.
+ the field's field type; for non-enum value types, must be exactly the field's field type; for enum types,
+ must be either the field's field type or the underyling integral type of that field type.
This delegate supports static fields, even those defined in structs, for legacy reasons.
@@ -2021,7 +2045,8 @@
The class that defines the instance field, or derived class of this type
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The name of the field
A readable/assignable delegate
@@ -2038,7 +2063,8 @@
The class that defines the instance field, or derived class of this type
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The instance
The name of the field
@@ -2060,7 +2086,8 @@
Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct)
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The type that defines the field, or derived class of this type; must not be a struct type unless the field is static
@@ -2090,7 +2117,8 @@
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The field
A readable/assignable delegate
@@ -2119,7 +2147,8 @@
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The instance
The field
@@ -2142,7 +2171,8 @@
The struct that defines the instance field
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
A reference to the runtime instance to access the field
A readable/assignable reference to the field
@@ -2153,7 +2183,8 @@
The struct that defines the instance field
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The name of the field
A readable/assignable delegate
@@ -2164,7 +2195,8 @@
The struct that defines the instance field
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The instance
The name of the field
@@ -2183,7 +2215,8 @@
The struct that defines the instance field
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The field
A readable/assignable delegate
@@ -2200,7 +2233,8 @@
The struct that defines the instance field
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The instance
The field
@@ -2218,7 +2252,8 @@
A readable/assignable reference delegate to a static field
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
A readable/assignable reference to the field
@@ -2228,7 +2263,8 @@
The type (can be class or struct) the field is defined in
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The name of the field
A readable/assignable reference to the field
@@ -2238,7 +2274,8 @@
Creates a static field reference
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The type (can be class or struct) the field is defined in
The name of the field
@@ -2250,7 +2287,8 @@
An arbitrary type (by convention, the type the field is defined in)
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The field
A readable/assignable reference to the field
@@ -2264,7 +2302,8 @@
Creates a static field reference delegate
The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type),
- a type that is assignable from the field's type
+ a type that is assignable from that type; or if the field's type is an enum type,
+ either that type or the underlying integral type of that enum type
The field
A readable/assignable delegate
@@ -2354,6 +2393,12 @@
The class/type
The new instance
+
+
+ Creates an (possibly uninitialized) instance of a given type
+ The class/type
+ The new instance
+
@@ -2362,7 +2407,7 @@
Makes a deep copy of any object
- The type of the instance that should be created
+ The type of the instance that should be created; for legacy reasons, this must be a class or interface
The original object
A copy of the original object but of type T
diff --git a/1.3/Assemblies/Rimatomics.dll b/1.3/Assemblies/Rimatomics.dll
index bcfb173..978a8ee 100644
Binary files a/1.3/Assemblies/Rimatomics.dll and b/1.3/Assemblies/Rimatomics.dll differ