-
Notifications
You must be signed in to change notification settings - Fork 16
Description
Under still uncertain trigger conditions (As Descent was loading perfectly in spite of these apparent systematic issues for several iterations, and the bug cropped up suddenly after a cross page reference appeared to try to load an item from a PRP I had not pushed to Minkata for testing- but I am NOT certain that was the trigger cause of the problem), it seems that having too many Cross-Page references for a mesh parent being in One PRP, with its drawable child being in a different PRP can have knockon effects on all other objects within that PRP, causing irregular and inconsistent loading.
For example, in this image, one log amongst this ladder was erroneously still assigned to "dsntVolcano" PRP which had a drawable object within it as the child of a Parented object in a different PRP, resulting in many items from the "dsntVolcano" PRP to load incorrectly.
Bizarrely, this could also cause items in "dsntVolcano" PRP to Partially render correctly- for example the following objects, which were having random parts of single meshes rendering correctly while the rest of it was not.
Per Ehren on discord:
For the caldera. The dsntUpperShaft page had an object that requested a child object that had been accidentally sorted to the dsntVolcano page, this caused the Draw span to be entirely loaded just by the request for the one object that had now been added to that wrong Draw span by virtue of being sorted to the wrong page.
The issue seems to be a conflict caused by the loading of the Draw span from both the parent object's page and the child object's page itself (which carries important coordinate data for where things should actually be displayed).
Additionally to this, adding to the weirdness, there seems to be a location-dependent trigger on where one links FROM with regards to rendering the age correctly or not.
During testing, it was noticed that if one linked to Descent either by linking book or python command, the location one linked FROM was highly dependent on how things loaded correctly.
If one linked from the relto bookshelf to Descent, either the treasurebookshaftfall spawn or the default link point either by book or command, the age would load with many drawn items loaded in incorrect places. HOWEVER, if one stood at the terminal in the Nexus age, as if one had just used it, and was either using the nexus itself or a console command, the age would load its visuals successfully. YET- if one took several steps away from the machine and linked with a command, the age would not load its visuals successfully.
To help illustrate this issue, I have an imported relto mesh paged into a copy of my descent blend- the fissure hole approximating the successful nexus link, and the hole where the hut is approximating a failed link from relto.
During testing, I migrated the default spawn point to the same location as the treasurebookshaftfall link point to ensure that the destination point's physical location was not a problem.
(The green line approximates where the successful link was originating from, the red line approximates where a failed link was originating from.)
Links originating at the Relto Fissure area (Where the Nexus is, roughly at the Zero Point of the Descent File, essentially) seemed to work successfully if you were in the exact tiny space that the nexus linkout point is, but otherwise was such a significantly tiny window of physical space that it's a miracle this was even stumbled upon in the first place.
My suspicion is that when items from the dsntVolcano PRP were improperly being loaded, they were being loaded with 'local coordinates' for a parent-child relationship which were being read as global coordinates, rather than their true global coordinates. This would lead to, in cases where one loaded the calling-upon PRP to another age, visuals such as this:
(Picture courtesy of Ehren)
In this example, Ehren paged in "dsntUpperShaft" PRP to Relto, loading all of its called upon drawable spans- this included our missing Caldera Objects from the dsntVolcano PRP that were NOT assigned to this PRP, but were accidentally being called to it due to a parent object reference from dsntUpperShaft to its child object in dsntVolcano.
The local coordinates for the drawn objects were applied instead of their local coordinates, resulting in this updside down Caldera view.
My own personal suggestion would be to institute some kind of check for "Is a Parent Object and its Child Object in the same PRP?" and halt an export if that is the case- listing said parent object and child object as being in mismatching PRPs.

