* 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
When serializing and deserializing to/from JSON we need to explicitly write nulls.
Because for development/editing we need to differentiate the following cases:
1. JSON is of an older version (field missing) -> initialize with code defined default
2. JSON is of the current version and field is actually null -> initialize with null
For networking we don't need to differentiate between those cases since client and server have the same version of the code at runtime.
So in networking case we can omit nulls from the JSON and skip all of these:
```
"OnComponentDestroy": null,
"OnComponentDisabled": null,
"OnComponentEnabled": null,
"OnComponentFixedUpdate": null,
"OnComponentStart": null,
"OnComponentUpdate": null,
"OnPropBreak": null,
"OnPropTakeDamage": null,
```
However, this wont reduce the amount of data that ends up on the wire, because compression already does a good job at deduplicating those strings.
```
Raw JSON with nulls : 41Kb
Raw JSON skip nulls : 27Kb (13Kb saved, 33.6% smaller, 1.51x ratio)
LZ4 fast with nulls : 7Kb (34Kb saved, 81.9% smaller, 5.54x ratio)
LZ4 fast skip nulls : 7Kb (34Kb saved, 82.6% smaller, 5.76x ratio)
```
The main benefit instead comes from saving CPU resources as this makes compression/decompression faster, because there is less data to process.
```
LZ4 with nulls compress : 0.210 ms/op
LZ4 with nulls decomp : 0.232 ms/op
LZ4 skip nulls compress : 0.165 ms/op
LZ4 skip nulls decomp : 0.074 ms/op
```
* Avoid callbackbatch aciton allocation and closure
Store the CommonCallback and GameObject/Comonent Instance instead of an action
* Scene push uses struct instead of DisposeAction
Avoids action allocation
* 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.
* Fix native resource networking
Native resource networking never properly worked, because it relied on ids that may not exist on a connecting client.
- `Resource.ResourceId` is now Obsolete
- Added `internal Resource.ResourceIdLong`
- Networking now uses the 64 bit id
- Register all Resource Paths during package load, so networking for native packages works even if they are not loaded
- Client automatically loads networked resource if not cached
- Clothing container now serializes path instead of ID but maintains backwards compatibility.
- Drop ResourceId usage in tools
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.
* Remove remnants of last attempt
* Add tests that checks if prefab source is retained after network spawn
* Stop breaking prefab instances on network spawn
* Serialize & Serialize prefab path in JSON for NetworkObjects