### Godot version

4.1 Beta 3

### System information

Win 10, RTX 2070 mobile

### Issue description

If you set a body to be Top Level using the check box in inspector and save your project, next time you open the project that checkbox is unchecked. Looks like 'project save' somehow ignores that property and doesn't save it,

### Steps to reproduce

1. start a new 3d scene
2. add a 3d node, say, a static body
3. set the node to Top Level by checking the Top Level box in the inspector with the node selected.
4. Save your project
5. Reload project (not scene, project)
6. The box is unchecked

### Minimal reproduction project

n/a
#include "node_3d.h"
#include "core/object/message_queue.h"
#include "scene/3d/visual_instance_3d.h"
#include "scene/main/viewport.h"
#include "scene/property_utils.h"
#include "scene/scene_string_names.h"
/*
 possible algorithms:
 Algorithm 1: (current)
 definition of invalidation: global is invalid
 1) If a node sets a LOCAL, it produces an invalidation of everything above
 .  a) If above is invalid, don't keep invalidating upwards
 2) If a node sets a GLOBAL, it is converted to LOCAL (and forces validation of everything pending below)
 drawback: setting/reading globals is useful and used very often, and using affine inverses is slow
---
 Algorithm 2: (no longer current)
 definition of invalidation: NONE dirty, LOCAL dirty, GLOBAL dirty
 1) If a node sets a LOCAL, it must climb the tree and set it as GLOBAL dirty
 .  a) marking GLOBALs as dirty up all the tree must be done always
 2) If a node sets a GLOBAL, it marks local as dirty, and that's all?
 //is clearing the dirty state correct in this case?
 drawback: setting a local down the tree forces many tree walks often
--
future: no idea
 */
Node3DGizmo::Node3DGizmo() {