-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Currently, the gizmo updates its location (defined as the position/rotation transform on the bone + local offset) after the user clicks on the axis parts of a gizmo (disc, arrows, scales). Internally, this occurs through the rgmSendBonePos
function, which updates the gizmo's location
External changes to nonphysical (and parent?) bones (such as on Advanced Bonemerged entities or a character's finger from Stop Motion Helper) does not update the gizmo's location, until the user manually calls the internal function by selecting another bone and then reselecting the desired bone
This feature shall track external changes to the bone and update the gizmo's location. Ideally, this would be accomplished with detours to ManipulateBonePos and ManipulateBoneAngles, given if the tool is equipped, and if ragdoll mover is not moving the gizmo, and if the bone is not in bone selection mode. This may need to be implemented with a guard for functions frequently call ManipulateBone*, such as during Stop Motion Helper playback, to minimize the outgoing rate of the rgmSendBonePos
function
This feature shall also update the gizmo's location when
- the user exits the advanced bone selection menu in any way
- the user deploys the tool
This prevents inaccurate locations in case any external changes happen to the bone while in advanced bone selection, or while the tool is unequipped