* Don't UpdatePrefabInstances if the edited PrefabScene is the only one open in editor
* Avoid some allocations when processing prefab guid mappings
* Json Diff use 64bit hash isntead of paths for presence tracking, which avoids a ton of string allocations
* Less LINQ in prefab GUID tracking code
* Log warning isntead of asserting when a prefab file is missing
* Prefab Instances with missing prefab files now show up as broken in the hierarchy
Their data is retained similar to missing components so if the file gets restored the instance will recreate properly
https://files.facepunch.com/lolleko/2026/April/07_15-50-CarelessIraniangroundjay.png
- Added `PrefabBuilder` which can be used in a ResourceLoader to include custom prefabs along with a mount
- Changed StartupLoadProject so that it will register custom asset types BEFORE mounting, so that any assets within mounts (like .prefab files) can be resolved by the asset system
- Added `PrefabFile.Load` which lazy-loads PrefabFiles (just like `Model.Load` or `Texture.Load`)
- ResourceLibrary.Load<>() has been updated to call PrefabFile.Load when handling a PrefabFile (just like Models, Textures, ect)
- Added some basic tests for the PrefabBuilder
* Use ToArray to avoid collection modified while iterated exception
Not sure this ever actually happened but better to be save.
* Remove ValidatePrefabLookup from SerializePrefabInstance
ValidatePrefabLookup may have modified GUIDs incorrectly on undo/redo.
Also Serialize should be read-only op.
ValidatePrefabLookup is still called at enough other places.
Before InitMappingsForNestedInstance would fail when encountering a missing prefab in the hierarchy and crash serialization.
Now Serialization will continue ad a descriptive warning will be logged.