Add support for ignoring auto-created instances in sync process

- Introduced a new configuration for ignored class names in Config.lua to streamline the sync process by skipping instances that are auto-created by Roblox, such as TouchTransmitter and Camera.
- Updated PatchTree, applyPatch, and diff functions to utilize this configuration, enhancing efficiency by preventing unnecessary processing of these instances.
This commit is contained in:
Joe 2026-01-20 22:58:44 -06:00
parent c5c6bf9a10
commit 3c33054afd
4 changed files with 16 additions and 6 deletions

View file

@ -8,6 +8,7 @@
local Packages = script.Parent.Parent.Parent.Packages
local Log = require(Packages.Log)
local Config = require(script.Parent.Parent.Config)
local PatchSet = require(script.Parent.Parent.PatchSet)
local Types = require(script.Parent.Parent.Types)
local invariant = require(script.Parent.Parent.invariant)
@ -27,9 +28,9 @@ local function applyPatch(instanceMap, patch)
local deferredRefs = {}
for _, removedIdOrInstance in ipairs(patch.removed) do
-- Skip TouchTransmitter (auto-created by Roblox when touch events are connected)
-- Skip auto-created instances that shouldn't be synced
local instance = if Types.RbxId(removedIdOrInstance) then instanceMap.fromIds[removedIdOrInstance] else removedIdOrInstance
if instance and instance.ClassName == "TouchTransmitter" then
if instance and Config.ignoredClassNames[instance.ClassName] then
continue
end

View file

@ -6,6 +6,7 @@
local Packages = script.Parent.Parent.Parent.Packages
local Log = require(Packages.Log)
local Config = require(script.Parent.Parent.Config)
local invariant = require(script.Parent.Parent.invariant)
local getProperty = require(script.Parent.getProperty)
local Error = require(script.Parent.Error)
@ -335,8 +336,8 @@ local function diff(instanceMap, virtualInstances, rootId)
-- corresponding virtual instance should be removed. Any instance that
-- does have a corresponding virtual instance is recursively diffed.
for _, childInstance in ipairs(instance:GetChildren()) do
-- Skip TouchTransmitter (auto-created by Roblox when touch events are connected)
if childInstance.ClassName == "TouchTransmitter" then
-- Skip auto-created instances that shouldn't be synced
if Config.ignoredClassNames[childInstance.ClassName] then
continue
end