Skip to content

Improve updates on the gizmo's position #97

@vlazed

Description

@vlazed

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions