FyroxEngine/Fyrox · warning
Node ( : ) and its children will be deleted, because it…
Error message
Node {} ({}:{}) and its children will be deleted, because it does not exist in the parent asset! What it means
During restore_integrity, instance nodes are checked against the parent resource: if a node's original handle is no longer valid in the resource's graph (node was deleted there), the node and all its children cannot be synchronized and are queued for deletion with this warning. This keeps instances consistent with their source asset.
Solutions
- Accept the deletion (intended behavior) and re-add the node in the parent prefab if it was removed accidentally.
- Restore the deleted node in the parent resource so the instance keeps its subtree.
- Update the scene instance by re-instantiating the prefab and reapplying your overrides.
- Check prefab file history to find which node disappeared and why.
Example fix
// before // prefab.toml: node 12 removed, but scene still references original handle 12:0 // after // re-add node 12 in the prefab, or re-instantiate: let handle = resource.data_ref().instantiate(graph);
Defensive patterns
Strategy: validation
Validate before calling
// detect orphaned instance nodes before sync deletes them
fn orphans(instance: &SceneResourceInstance, res: &Model) -> Vec<Handle<Node>> {
instance.nodes()
.filter(|n| !res.data_ref().graph().is_valid_handle(n.original_handle_in_resource()))
.map(|n| n.self_handle())
.collect()
} Try / catch
let doomed = orphans(&instance, &resource);
if !doomed.is_empty() {
log::warn!("nodes {:?} will be deleted on sync; re-add them in the prefab first", doomed);
} Prevention
- Don't delete prefab nodes that scene instances depend on without checking usages
- Search the project for instance references before removing prefab nodes
- Keep prefab edits and scene updates in the same commit
- Back up scenes before large prefab refactors
When it happens
Trigger: restore_integrity (called on scene sync / resource reload) encounters an instance node whose original_handle_in_resource() is invalid — the corresponding node was removed from the prefab after the instance was created.
Common situations: Editing a prefab in the editor and deleting a node that a scene instance uses; loading an older scene against a newer prefab; version-control merge changed the prefab.
Related errors
- Node ( : ) and its children will be deleted, because its…
- Node ( : ) instance have different type than in the…
- Unable to find original handle for node
- There are multiple original nodes for
- Graph pool must be empty on load!
AI-assisted analysis of FyroxEngine/Fyrox@76c91aad8e (2026-09-10).
Data as JSON: /api/errors/43526d129c4e5a67.
Report an issue: GitHub.
Appendix: source
Thrown at fyrox-graph/src/lib.rs:1237
})
.collect::<Vec<_>>();
let instance_count = instances.len();
let mut restored_count = 0;
for (instance_root, resource) in instances.iter().cloned() {
// Step 1. Find and remove orphaned nodes.
let mut nodes_to_delete = Vec::new();
for (_, node) in self.traverse_iter(instance_root) {
if let Some(resource) = node.resource() {
if let Some(model) = resource.state().data() {
if !model
.graph()
.is_valid_handle(node.original_handle_in_resource())
{
nodes_to_delete.push(node.self_handle());
Log::warn(format!(
"Node {} ({}:{}) and its children will be deleted, because it \
does not exist in the parent asset!",
node.name(),
node.self_handle().index(),
node.self_handle().generation(),
))
}
} else {
Log::warn(format!(
"Node {} ({}:{}) and its children will be deleted, because its \
parent asset failed to load!",
node.name(),
node.self_handle().index(),
node.self_handle().generation(),
))
}
}
}View on GitHub (pinned to 76c91aad8e)