HandleAdornments adorned to the Workspace are arbitrarily offset when parts are inserted

HandleAdornments, such as LineHandleAdornment or CylinderHandleAdornment, whose Adornee is Workspace, can get offset from the origin when parts are inserted or removed from Workspace.

The offset seems to happen when parts are inserted or removed near the “bounding box” of the Workspace, and causing said bounding box to resize. For instance, inserting a part that extends laterally outside of the default baseplate causes an offset to occur.

The offset seemingly only updates whenever a part is inserted or removed. Moving, rotating or scaling a part has no effect.

Below is a video showing the bug in action. I’ve included the place file below as well.

handleadornment_workspace_bug.rbxl (51.7 KB)

1 Like

This is the expected (ish) behavior.

The only issue here is that the adornment’s aren’t being invalidated a the correct time, but the adornment jumping around is the expected behavior.

What’s happening:

  • HandleAdornments use the Adornee’s GetPivot as the the base for their position.
  • Workspace is a Model (you can see this yourself if you call IsA(“Model”) on it).
  • Models have a special case where their pivot is initially the center of the bounding box of their contents, until the first time they get moved, at which point the pivot gets “locked in” (this is to support creating an empty model and dropping some contents into it doing what you’d expect)
  • Since you rarely move the entire workspace, it has not been locked in.
  • → When contents in the workspace change the HandleAdornments move around.

You can fix this either by:

  • Adorning to Terrain instead (The terrain is at the origin and cannot move)
  • Moving the workspace and then moving it back to lock in its pivot. (Select it and set Origin to something then back to zero).
3 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.