TransformedWorldCFrame should be Parallel Safe

As a Roblox developer, it is currently too hard to write parallel actor code using a Bone’s TransformedWorldCFrame property.

Imgur

I am not sure what the difference is between TransformedWorldCFrame and TransformedCFrame (the latter being Read Parallel Safe) internally, but they should both be read safe.

If Roblox is able to address this issue, it would improve my development experience because I do not need to write workarounds in determining the world space and world cframe of a bone in-animation while writing Parallel code. I believe Transform & TransformedCFrame only determines the orientation of the root bone and it is tedious to determine the position of a bone without TransformedWorldCFrame.

5 Likes

I 2nd this, currently working on a Bone Physics system which I hoped I would have been able to animate on-top of. TransformedWorldCFrame not being read parallel causes disorganisation in the code base I don’t see why TransformedWorldCFrame wouldnt be read parallel whilst TransformCFrame is.

To those who do want to get the world cframe in parallel you can use this function:

local function QueryTransformedWorldCFrame(Bone: Bone)
	local Parent = Bone.Parent
	local ParentCFrame

	if Parent:IsA("Bone") then
		ParentCFrame = QueryTransformedWorldCFrame(Parent)
	else
		ParentCFrame = Parent.CFrame
	end

	return ParentCFrame:ToWorldSpace(Bone.TransformedCFrame)
end