I'm having trouble re-setting the position of a child entity during app re-load even though it appears that I am correctly obtaining and persisting the correct translation values after a drag gesture.
The problem exists when I drag a child element to a new location (persist those new values) then reload the app to force re-positioning from persisted translation values.
I notice that the parent relationship changes during interaction (tap or drag) which can be seen in the debug statements. I'm wondering if this is related to the problem, or, if the parent change is normal during re-rendering and is un-related to my problem.
My thought process is since we care about relative translation values when persisting, if the parent relationship is changed just before persistence, then, are we persisting and setting the wrong values?
Project Link: Private
STEPS TO REPRODUCE
- Run the app.
- Drag the pre-loaded stage down the Y axis so that the floor of the stage is more visible to your eye (in order to better visualize the problem).
- Tap the button in the timeline to create a new project.
- Drag the only visible element from the left panel onto the timeline (element is labeled f_works_entity_1).
- There should now be a green 3d model added to the stage.
- Drag this green element to a new location (be careful to hover over the green element so that you don't inadvertently drag the stage).
- Re-run the app to see that the green element is offset to a new location, not the last dragged location.
- To reset and try again, delete the project canvas next to the project name (trash button) then restart the app.
Areas of concern:
- RealityKitView is the only file you may need.
- Line 119 is where we create new child entities
- Lines 185-219 is where we persist and apply persisted values.
- You can also search FIXME in the file to see areas of concern.
Tip:
- I have a tap gesture on each entity that produces a debug statement with info about the entity and its parent including IDs.