EditorApplication.isCompiling conflates three states: actually compiling,
compilation queued, and finished-but-reload-deferred. A project holding
EditorApplication.LockReloadAssemblies sits in the third state for as long
as the lock is held, with no compilation running, and isCompiling stays
true the whole time.
Eight call sites gated on that raw flag, so they refused work indefinitely:
the stdio bridge would not start, unity_reflect and manage_scriptable_object
returned "Unity is compiling", refresh_unity reported the wrong resulting
state and never completed its wait, the stdio reload handler deferred its
resume, and TestJobManager both mis-attributed its init timeout and reported
a bogus "compiling" block reason.
Route all eight through EditorStateCache.GetActualIsCompiling(), which falls
back to the event-tracked CompilationPipeline flag, and drop the isPlaying
gate that previously limited the workaround to play mode.
Verified live: with LockReloadAssemblies held after RequestScriptCompilation,
EditorApplication.isCompiling is true while the pipeline flag is false, so
CompilationPipeline.compilationFinished does fire while the reload is held.
1.Add Compat based scripts revolving around UnityCompatShims.cs, that will document our current API Compatibility changes in several files.
2.Add custom screenshot folder selection
- get_member now resolves extension methods as fallback before "not found"
- lookup preserves original-case slugs for Manual pages (UIE-USS-Properties-Reference)
- lookup surfaces per-source errors instead of silently dropping them
- CLI docs.py: call _get_doc() directly instead of duplicating fallback logic
- UnityReflect.cs: use UnityTypeResolver.ResolveAny() for primary type resolution
- UnityReflect.cs: cache GetAssemblyTypeCache() before loops (avoid repeated lock)
- UnityReflect.cs: cache ObsoleteAttribute lookup (was called twice per method)
- UnityReflect.cs: use HashSet instead of List for obsolete member dedup
- UnityReflect.cs: reuse assembly cache in FindExtensionMethods
Implements get_type, get_member, and search actions via live
C# reflection. Assembly cache with domain reload invalidation,
extension method discovery, ambiguity detection, generic type parsing.