I run a lot of entity logic server-side. To save on resources, the entities don’t have a model. However, the model may have several important parts that I need to be able to simulate serverside, so I create a table of CFrames to track each part. When one “part” changes, I need to propagate the changes to the rest of the parts, like a weld constraint.
In order to do this, I track the change (delta) in the root part’s CFrame every step and apply it to the rest of the entities’s “model”. To calculate the change, I use the root part’s last CFrame and their current CFrame. Then I apply this delta to the parts that need to update.
local delta = lastCFrame:ToObjectSpace(currentCFrame)
part.CFrame *= delta
Seems to me that it should work on paper. However, this isn’t giving me the results I’m looking for. The “welded” part seems to drift off into the horizon. Any help would be appreciated.