From 3c33054afdc4a21f83ee559a86c4b73dca9a4f8e Mon Sep 17 00:00:00 2001 From: Joe Date: Tue, 20 Jan 2026 22:58:44 -0600 Subject: [PATCH] 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. --- plugin/src/Config.lua | 7 +++++++ plugin/src/PatchTree.lua | 5 +++-- plugin/src/Reconciler/applyPatch.lua | 5 +++-- plugin/src/Reconciler/diff.lua | 5 +++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/plugin/src/Config.lua b/plugin/src/Config.lua index 8897996a..7619f432 100644 --- a/plugin/src/Config.lua +++ b/plugin/src/Config.lua @@ -16,6 +16,12 @@ for i = 1, 3 do end end +-- ClassNames to ignore during sync (auto-created by Roblox, not meaningful for sync) +local IgnoredClassNames = { + TouchTransmitter = true, + Camera = true, +} + return strict("Config", { isDevBuild = isDevBuild, codename = "Epiphany", @@ -24,4 +30,5 @@ return strict("Config", { protocolVersion = 5, defaultHost = "localhost", defaultPort = "34872", + ignoredClassNames = IgnoredClassNames, }) diff --git a/plugin/src/PatchTree.lua b/plugin/src/PatchTree.lua index f888c973..6b9cb310 100644 --- a/plugin/src/PatchTree.lua +++ b/plugin/src/PatchTree.lua @@ -11,6 +11,7 @@ local Packages = Rojo.Packages local Log = require(Packages.Log) +local Config = require(Plugin.Config) local Timer = require(Plugin.Timer) local Types = require(Plugin.Types) local WhitespaceUtil = require(Plugin.WhitespaceUtil) @@ -335,8 +336,8 @@ function PatchTree.build(patch, instanceMap, changeListHeaders) continue end - -- Skip TouchTransmitter (auto-created by Roblox when touch events are connected) - if instance.ClassName == "TouchTransmitter" then + -- Skip auto-created instances that shouldn't be synced + if Config.ignoredClassNames[instance.ClassName] then continue end diff --git a/plugin/src/Reconciler/applyPatch.lua b/plugin/src/Reconciler/applyPatch.lua index aca5c126..a04f1ff7 100644 --- a/plugin/src/Reconciler/applyPatch.lua +++ b/plugin/src/Reconciler/applyPatch.lua @@ -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 diff --git a/plugin/src/Reconciler/diff.lua b/plugin/src/Reconciler/diff.lua index 6a4502fe..96de9cbd 100644 --- a/plugin/src/Reconciler/diff.lua +++ b/plugin/src/Reconciler/diff.lua @@ -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