Aha!!! Think I've got it. The last limb -1 (don't ask me why -1) is being treat as the root limb. If you then step backwards through the limbs and add them back in, using the world locations as offsets, you can rebuild it! Interesting. The deconstruct/reconstruct code is shown below. Need to split and formulate this into pack and unpack function nows. That should simply be a case of semantics though. I'll post it when I'm done....
dbLoadObject(xfilename,900);
dbPerformChecklistForObjectLimbs(900);
int maxlimbs = dbChecklistQuantity();
int limb=0;
char text[256];
for(int cnt = maxlimbs; cnt > 0; cnt--){
// Obj->limbObj->Mesh->Memblock->file
dbMakeObjectFromLimb(800,900,cnt);
dbMakeMeshFromObject(1,800);
float x = dbLimbPositionX(900,cnt);
float y = dbLimbPositionY(900,cnt);
float z = dbLimbPositionZ(900,cnt);
if(cnt==maxlimbs){
dbMakeObject(1000,1,0);
} else {
if(dbLimbVisible(900,cnt)==1){
limb++;
dbAddLimb(1000,limb,1);
dbOffsetLimb(1000,limb,x, y, z);
}
}
dbDeleteMesh(1);
dbDeleteObject(800);
}
And the Geek shall inherit the earth