Toggle or Disable auto-accessory scaling?

I’m modifying an old open-sourced ATF customization system to work with R15 and I’ve run into an issue while adding body scaling. Attached accessories automatically scale and re-attach to their base places and ignore previously modified weld points, scales, rotations and offsets. The system uses :AddAccessory() to place accessories on the character. See attached video for a visual on the problem.

I’m looking for a way to toggle the automatic scaling, and disabling AutomaticScalingEnabled in the humanoid hasn’t seemed to work.

2 Likes

Hey there, I would recommend trying to access the current offset and welds pre-customization and then using Instance.new() reattach the newly modified accessory to the previous offsets and welds

2 Likes

Currently trying this by inserting string values for previous offsets, scales, rotations and welds.

1 Like

Update: This is working for scale, running into an issue with rotation. CFrames are evil and keep adjusting to different values than the one displayed on the slider list when more than 2 axes are adjusted.

How are you setting the CFrame values? Are you using CFrame.new and then adding offset values or are you using lookat vectors?

I am ‘saving’ the CFrame values by creating a CFrameValue object in every hat added to the character. The CFrame itself is determined by values in a textbox that can be changed by sliders, which are then fed into a variable and sent to the rotation event like so:

createdRotation = CFrame.fromEulerAnglesYXZ(math.rad(rotationXValue), math.rad(rotationYValue), math.rad(rotationZValue))
fireAccessoryRotation:FireServer(createdRotation, weld)

Then the server handler handles the information like so:

fireAccessoryRotation.OnServerEvent:Connect(function(player, createdRotation, weld)
if createdRotation == nil then
weld.C1 = weld.Parent.Parent.LastRotation.Value + weld.C1.Position
else
weld.Parent.Parent.LastRotation.Value = createdRotation
weld.C1 = createdRotation + weld.C1.Position
end
end)