herrrrrrhggg. Another duhhhr moment, as I realize I big group of buttons I had planned are unnecessary. I'm still trying to hack it out in my head with little success, so I'm going to type it out here cuz it helps me think an wot. Feel free to not read this part.
Vars.
CompObj array - list of collision object(bone) indices
CompObj(n, 1) - limb number associated with bone
CompObj(n, 2) - index of parent bone
LimbName$ array - list of limb names
CurrentComp - bone number for currently selected limb in the list, -1 if the current limb has no bone
CurrentLimb - current limb number
CMode - 0 for normal, 1 if "add child" has been clicked(add child becomes "confirm"). User chooses which limb will be matched with the bone to be the child of the current bone. Change CurrentLimb, but don't update CurrentComp - glue PrevObj2
Buttons.
Add bone - selected limb has no bone, create default box bone at origin with no parent, associate with selected limb.
Add child - CMode becomes 1, select child limb from the list. If the child limb picked already has a bone, set that bone's parent to the selected, select it, and update. If the child limb has no bone, create one with selected bone as its parent, select child bone.
Add bone/child - Always add to Ragdoll object CompObj(0), if it exists then destroy it and add updated.
Rotate/Offset - will refer to local coordinates rather than global when in ragdoll mode. Create new cursor object with arrows signifying local axes.
Delete object - Check all bones to see if selected bone is a parent, if so then set these bones' parents to 0. Remove object and resort CompObj list - (n,1) and (n,2) as well.
Constraints - Show new cursor object for local axes if local constraints have been selected. Min/Max angle - Long boxes, rotated to the desired angle(+local angle if needed) and moved away from origin at that angle to show limits. Twist - ?. On return key(toggle2), update bone with new constraint values.
ok. All better now.