Add default properties caching and update matching logic

- Implemented a caching mechanism for default properties per class in `rbx_dom_lua/init.lua`, allowing for efficient retrieval of encoded default values, including inherited defaults.
- Updated the matching logic in `Reconciler/matching.lua` to account for properties present only on the Studio side, ensuring accurate comparisons against default values during reconciliation.
- Added new test cases to validate the handling of default-omitted properties, enhancing the robustness of the reconciliation process.

These changes improve the efficiency and accuracy of property matching, addressing issues related to default values in the reconciliation workflow.
This commit is contained in:
Joe 2026-02-17 07:52:29 -06:00
parent e54f5ef4e3
commit 9c6966acff
30 changed files with 1648 additions and 0 deletions

View file

@ -0,0 +1,3 @@
{
className: "UIAspectRatioConstraint"
}

View file

@ -0,0 +1,46 @@
{
className: "ImageLabel",
properties: {
AnchorPoint: [
0.5,
0
],
BackgroundColor3: [
1,
1,
1
],
BackgroundTransparency: 1,
BorderColor3: [
0,
0,
0
],
BorderSizePixel: 0,
ImageContent: "rbxassetid://131974996946194",
Position: {
UDim2: [
[
0.5,
0
],
[
0.5,
0
]
]
},
Size: {
UDim2: [
[
0.699999988079071,
0
],
[
0.699999988079071,
0
]
]
}
}
}

View file

@ -0,0 +1,36 @@
{
className: "UIGradient",
properties: {
Color: {
ColorSequence: {
keypoints: [
{
color: [
0.1882352977991104,
0.11372549086809158,
1
],
time: 0
},
{
color: [
0.5490196347236633,
0,
1
],
time: 0.608996570110321
},
{
color: [
0.501960813999176,
0,
0.9176470637321472
],
time: 1
}
]
}
},
Rotation: -90
}
}

View file

@ -0,0 +1,6 @@
{
className: "UIStroke",
properties: {
Thickness: 2
}
}

View file

@ -0,0 +1,60 @@
{
className: "TextLabel",
properties: {
AnchorPoint: [
0.5,
0
],
BackgroundColor3: [
1,
1,
1
],
BackgroundTransparency: 1,
BorderColor3: [
0,
0,
0
],
BorderSizePixel: 0,
FontFace: {
cachedFaceId: null,
family: "rbxasset://fonts/families/LuckiestGuy.json",
style: "Normal",
weight: "Regular"
},
Position: {
UDim2: [
[
0.5,
0
],
[
0,
0
]
]
},
Size: {
UDim2: [
[
1,
0
],
[
0.5,
0
]
]
},
Text: "UFO",
TextColor3: [
1,
1,
1
],
TextScaled: true,
TextSize: 14,
TextWrapped: true
}
}

View file

@ -0,0 +1,45 @@
{
className: "Frame",
properties: {
AnchorPoint: [
0.5,
0.5
],
BackgroundColor3: [
1,
1,
1
],
BackgroundTransparency: 1,
BorderColor3: [
0,
0,
0
],
BorderSizePixel: 0,
Position: {
UDim2: [
[
0.5,
0
],
[
0.5,
0
]
]
},
Size: {
UDim2: [
[
1,
0
],
[
1,
0
]
]
}
}
}

View file

@ -0,0 +1,26 @@
{
className: "BillboardGui",
properties: {
Active: true,
LightInfluence: 1,
ResetOnSpawn: false,
Size: {
UDim2: [
[
60,
0
],
[
40,
0
]
]
},
StudsOffset: [
0,
75,
0
],
ZIndexBehavior: "Sibling"
}
}

View file

@ -0,0 +1,16 @@
{
attributes: {
Rojo_Ref_SoundGroup: "ServerStorage/__server_muted.model.json5"
},
className: "Sound",
properties: {
AudioContent: "rbxassetid://9120549564",
Looped: true,
Playing: true,
SourceAssetId: 9120549564,
Tags: [
"SoundGroupEffects"
],
Volume: 3
}
}

View file

@ -0,0 +1,29 @@
{
className: "Part",
properties: {
Anchored: true,
BottomSurface: "Smooth",
CFrame: [
789.7578125,
37.375,
0.00000762939453125,
1,
0,
0,
0,
1,
0,
0,
0,
1
],
CanCollide: false,
Size: [
25.515625,
70.75,
260
],
TopSurface: "Smooth",
Transparency: 1
}
}

View file

@ -0,0 +1,15 @@
{
className: "Texture",
properties: {
Color3: [
0.41568630933761597,
0,
1
],
Face: "Top",
StudsPerTileU: 200,
StudsPerTileV: 200,
TextureContent: "rbxassetid://10025668350",
Transparency: 0.6000000238418579
}
}

View file

@ -0,0 +1,16 @@
{
className: "Texture",
name: "Texture",
properties: {
Color3: [
0.41568630933761597,
0,
1
],
Face: "Right",
StudsPerTileU: 200,
StudsPerTileV: 200,
TextureContent: "rbxassetid://10025668350",
Transparency: 0.6000000238418579
}
}

View file

@ -0,0 +1,16 @@
{
className: "Texture",
name: "Texture",
properties: {
Color3: [
0.40000003576278687,
0,
1
],
Face: "Right",
StudsPerTileU: 200,
StudsPerTileV: 200,
TextureContent: "rbxassetid://10023635072",
Transparency: 0.6499999761581421
}
}

View file

@ -0,0 +1,16 @@
{
className: "Texture",
name: "Texture",
properties: {
Color3: [
0.40000003576278687,
0,
1
],
Face: "Top",
StudsPerTileU: 200,
StudsPerTileV: 200,
TextureContent: "rbxassetid://10023635072",
Transparency: 0.6499999761581421
}
}

View file

@ -0,0 +1,16 @@
{
className: "Texture",
name: "Texture",
properties: {
Color3: [
0.41568630933761597,
0,
1
],
Face: "Left",
StudsPerTileU: 200,
StudsPerTileV: 200,
TextureContent: "rbxassetid://10025668350",
Transparency: 0.6000000238418579
}
}

View file

@ -0,0 +1,15 @@
{
className: "Texture",
name: "Texture",
properties: {
Color3: [
0.41568630933761597,
0,
1
],
StudsPerTileU: 200,
StudsPerTileV: 200,
TextureContent: "rbxassetid://10025668350",
Transparency: 0.6000000238418579
}
}

View file

@ -0,0 +1,16 @@
{
className: "Texture",
name: "Texture",
properties: {
Color3: [
0.41568630933761597,
0,
1
],
Face: "Bottom",
StudsPerTileU: 200,
StudsPerTileV: 200,
TextureContent: "rbxassetid://10025668350",
Transparency: 0.6000000238418579
}
}

View file

@ -0,0 +1,16 @@
{
className: "Texture",
name: "Texture",
properties: {
Color3: [
0.41568630933761597,
0,
1
],
Face: "Back",
StudsPerTileU: 200,
StudsPerTileV: 200,
TextureContent: "rbxassetid://10025668350",
Transparency: 0.6000000238418579
}
}

View file

@ -0,0 +1,16 @@
{
className: "Texture",
name: "Texture",
properties: {
Color3: [
0.40000003576278687,
0,
1
],
Face: "Back",
StudsPerTileU: 200,
StudsPerTileV: 200,
TextureContent: "rbxassetid://10023635072",
Transparency: 0.6499999761581421
}
}

View file

@ -0,0 +1,16 @@
{
className: "Texture",
name: "Texture",
properties: {
Color3: [
0.40000003576278687,
0,
1
],
Face: "Bottom",
StudsPerTileU: 200,
StudsPerTileV: 200,
TextureContent: "rbxassetid://10023635072",
Transparency: 0.6499999761581421
}
}

View file

@ -0,0 +1,15 @@
{
className: "Texture",
name: "Texture",
properties: {
Color3: [
0.40000003576278687,
0,
1
],
StudsPerTileU: 200,
StudsPerTileV: 200,
TextureContent: "rbxassetid://10023635072",
Transparency: 0.6499999761581421
}
}

View file

@ -0,0 +1,16 @@
{
className: "Texture",
name: "Texture",
properties: {
Color3: [
0.40000003576278687,
0,
1
],
Face: "Left",
StudsPerTileU: 200,
StudsPerTileV: 200,
TextureContent: "rbxassetid://10023635072",
Transparency: 0.6499999761581421
}
}

View file

@ -0,0 +1,185 @@
{
attributes: {
Size_Curve: {
BinaryString: "AAAAAAAAgD8AAAAAyEWiPWTpPj9Q1747AACAPwAAAAAAAAAAAAAAAAAAAAAAAAAA"
},
Size_End: 60,
Size_Envelope: 5,
Size_Start: 45
},
className: "ParticleEmitter",
properties: {
Color: {
ColorSequence: {
keypoints: [
{
color: [
0.6666666865348816,
0,
1
],
time: 0
},
{
color: [
0.6666666865348816,
0,
1
],
time: 1
}
]
}
},
Lifetime: {
NumberRange: [
0.25,
0.6000000238418579
]
},
LightEmission: 1,
LockedToPart: true,
Size: {
NumberSequence: {
keypoints: [
{
envelope: 5,
time: 0,
value: 45
},
{
envelope: 5,
time: 0.001580123440362513,
value: 46.08238983154297
},
{
envelope: 5,
time: 0.006548703648149967,
value: 47.16343307495117
},
{
envelope: 5,
time: 0.015281829982995987,
value: 48.24135971069336
},
{
envelope: 5,
time: 0.028204884380102158,
value: 49.313777923583984
},
{
envelope: 5,
time: 0.045797109603881836,
value: 50.37750244140625
},
{
envelope: 5,
time: 0.06858612596988678,
value: 51.42829513549805
},
{
envelope: 5,
time: 0.09713879972696304,
value: 52.4605827331543
},
{
envelope: 5,
time: 0.13203296065330505,
value: 53.46717071533203
},
{
envelope: 5,
time: 0.17381449043750763,
value: 54.438995361328125
},
{
envelope: 5,
time: 0.22292612493038177,
value: 55.36511993408203
},
{
envelope: 5,
time: 0.27961885929107666,
value: 56.23305892944336
},
{
envelope: 5,
time: 0.34385624527931213,
value: 57.029701232910156
},
{
envelope: 5,
time: 0.4152511656284332,
value: 57.74271774291992
},
{
envelope: 5,
time: 0.49307429790496826,
value: 58.362186431884766
},
{
envelope: 5,
time: 0.5763297080993652,
value: 58.88185501098633
},
{
envelope: 5,
time: 0.6638965010643005,
value: 59.29954147338867
},
{
envelope: 5,
time: 0.7546600699424744,
value: 59.6165657043457
},
{
envelope: 5,
time: 0.8476089239120483,
value: 59.83663558959961
},
{
envelope: 5,
time: 1,
value: 59.964595794677734
}
]
}
},
Speed: {
NumberRange: [
0.0010000000474974513,
0.0010000000474974513
]
},
Tags: [
"_VFX"
],
Texture: "rbxassetid://77024587778878",
Transparency: {
NumberSequence: {
keypoints: [
{
envelope: 0,
time: 0,
value: 1
},
{
envelope: 0,
time: 0.09989999979734421,
value: 0.75
},
{
envelope: 0,
time: 0.6000000238418579,
value: 0.75
},
{
envelope: 0,
time: 1,
value: 1
}
]
}
}
}
}

View file

@ -0,0 +1,186 @@
{
attributes: {
Size_Curve: {
BinaryString: "AAAAAAAAgD8AAAAAyEWiPWTpPj9Q1747AACAPwAAAAAAAAAAAAAAAAAAAAAAAAAA"
},
Size_End: 60,
Size_Envelope: 5,
Size_Start: 45
},
className: "ParticleEmitter",
name: "glow",
properties: {
Color: {
ColorSequence: {
keypoints: [
{
color: [
0.364705890417099,
0.11372549086809158,
1
],
time: 0
},
{
color: [
0.364705890417099,
0.11372549086809158,
1
],
time: 1
}
]
}
},
Lifetime: {
NumberRange: [
0.25,
0.6000000238418579
]
},
LightEmission: 1,
LockedToPart: true,
Size: {
NumberSequence: {
keypoints: [
{
envelope: 5,
time: 0,
value: 45
},
{
envelope: 5,
time: 0.001580123440362513,
value: 46.08238983154297
},
{
envelope: 5,
time: 0.006548703648149967,
value: 47.16343307495117
},
{
envelope: 5,
time: 0.015281829982995987,
value: 48.24135971069336
},
{
envelope: 5,
time: 0.028204884380102158,
value: 49.313777923583984
},
{
envelope: 5,
time: 0.045797109603881836,
value: 50.37750244140625
},
{
envelope: 5,
time: 0.06858612596988678,
value: 51.42829513549805
},
{
envelope: 5,
time: 0.09713879972696304,
value: 52.4605827331543
},
{
envelope: 5,
time: 0.13203296065330505,
value: 53.46717071533203
},
{
envelope: 5,
time: 0.17381449043750763,
value: 54.438995361328125
},
{
envelope: 5,
time: 0.22292612493038177,
value: 55.36511993408203
},
{
envelope: 5,
time: 0.27961885929107666,
value: 56.23305892944336
},
{
envelope: 5,
time: 0.34385624527931213,
value: 57.029701232910156
},
{
envelope: 5,
time: 0.4152511656284332,
value: 57.74271774291992
},
{
envelope: 5,
time: 0.49307429790496826,
value: 58.362186431884766
},
{
envelope: 5,
time: 0.5763297080993652,
value: 58.88185501098633
},
{
envelope: 5,
time: 0.6638965010643005,
value: 59.29954147338867
},
{
envelope: 5,
time: 0.7546600699424744,
value: 59.6165657043457
},
{
envelope: 5,
time: 0.8476089239120483,
value: 59.83663558959961
},
{
envelope: 5,
time: 1,
value: 59.964595794677734
}
]
}
},
Speed: {
NumberRange: [
0.0010000000474974513,
0.0010000000474974513
]
},
Tags: [
"_VFX"
],
Texture: "rbxassetid://77024587778878",
Transparency: {
NumberSequence: {
keypoints: [
{
envelope: 0,
time: 0,
value: 1
},
{
envelope: 0,
time: 0.09989999979734421,
value: 0.75
},
{
envelope: 0,
time: 0.6000000238418579,
value: 0.75
},
{
envelope: 0,
time: 1,
value: 1
}
]
}
}
}
}

View file

@ -0,0 +1,186 @@
{
attributes: {
Size_Curve: {
BinaryString: "AAAAAAAAgD8AAAAAyEWiPWTpPj9Q1747AACAPwAAAAAAAAAAAAAAAAAAAAAAAAAA"
},
Size_End: 60,
Size_Envelope: 5,
Size_Start: 45
},
className: "ParticleEmitter",
name: "glow",
properties: {
Color: {
ColorSequence: {
keypoints: [
{
color: [
0.6666666865348816,
0,
1
],
time: 0
},
{
color: [
0.6666666865348816,
0,
1
],
time: 1
}
]
}
},
Lifetime: {
NumberRange: [
0.25,
0.6000000238418579
]
},
LightEmission: 1,
LockedToPart: true,
Size: {
NumberSequence: {
keypoints: [
{
envelope: 5,
time: 0,
value: 45
},
{
envelope: 5,
time: 0.001580123440362513,
value: 46.08238983154297
},
{
envelope: 5,
time: 0.006548703648149967,
value: 47.16343307495117
},
{
envelope: 5,
time: 0.015281829982995987,
value: 48.24135971069336
},
{
envelope: 5,
time: 0.028204884380102158,
value: 49.313777923583984
},
{
envelope: 5,
time: 0.045797109603881836,
value: 50.37750244140625
},
{
envelope: 5,
time: 0.06858612596988678,
value: 51.42829513549805
},
{
envelope: 5,
time: 0.09713879972696304,
value: 52.4605827331543
},
{
envelope: 5,
time: 0.13203296065330505,
value: 53.46717071533203
},
{
envelope: 5,
time: 0.17381449043750763,
value: 54.438995361328125
},
{
envelope: 5,
time: 0.22292612493038177,
value: 55.36511993408203
},
{
envelope: 5,
time: 0.27961885929107666,
value: 56.23305892944336
},
{
envelope: 5,
time: 0.34385624527931213,
value: 57.029701232910156
},
{
envelope: 5,
time: 0.4152511656284332,
value: 57.74271774291992
},
{
envelope: 5,
time: 0.49307429790496826,
value: 58.362186431884766
},
{
envelope: 5,
time: 0.5763297080993652,
value: 58.88185501098633
},
{
envelope: 5,
time: 0.6638965010643005,
value: 59.29954147338867
},
{
envelope: 5,
time: 0.7546600699424744,
value: 59.6165657043457
},
{
envelope: 5,
time: 0.8476089239120483,
value: 59.83663558959961
},
{
envelope: 5,
time: 1,
value: 59.964595794677734
}
]
}
},
Speed: {
NumberRange: [
0.0010000000474974513,
0.0010000000474974513
]
},
Tags: [
"_VFX"
],
Texture: "rbxassetid://77024587778878",
Transparency: {
NumberSequence: {
keypoints: [
{
envelope: 0,
time: 0,
value: 1
},
{
envelope: 0,
time: 0.09989999979734421,
value: 0.75
},
{
envelope: 0,
time: 0.6000000238418579,
value: 0.75
},
{
envelope: 0,
time: 1,
value: 1
}
]
}
}
}
}

View file

@ -0,0 +1,60 @@
{
className: "UnionOperation",
properties: {
Anchored: true,
AssetId: "http://www.roblox.com//asset/?id=212226088",
CFrame: [
801.715576171875,
36.375,
0.00000762939453125,
1,
0,
0,
0,
1,
0,
0,
0,
1
],
CanCollide: false,
CanQuery: false,
CanTouch: false,
CastShadow: false,
Color: {
Color3uint8: [
48,
12,
71
]
},
FormFactor: "Symmetric",
InitialSize: [
18.943885803222656,
6.7999587059021,
39.99999237060547
],
Size: [
49.43058776855469,
72.75,
260
],
UnscaledCofm: [
-1.2760223150253296,
-0.917913019657135,
0.000006928649327164749
],
UnscaledVolInertiaDiags: [
321672.25,
343861.1875,
37455.859375
],
UnscaledVolInertiaOffDiags: [
5263.43994140625,
0.014713685028254986,
-0.0022491957060992718
],
UnscaledVolume: 2355.29296875,
UsePartColor: true
}
}

View file

@ -0,0 +1,52 @@
{
attributes: {
Rojo_Ref_PrimaryPart: "ServerStorage/UFOWave/TsunamiWave",
Speed: 10,
ZonesPassed: {
Float32: 0
}
},
className: "Model",
properties: {
ModelMeshCFrame: [
-740.2847900390625,
-71.00001525878906,
-369.2483825683594,
-2.6309862732887268e-8,
0,
-1.000003695487976,
0,
1,
0,
1.000003695487976,
0,
-2.6309862732887268e-8
],
WorldPivotData: {
OptionalCFrame: {
orientation: [
[
1,
0,
0
],
[
0,
1,
0
],
[
0,
0,
1
]
],
position: [
801.715576171875,
36.375,
0.00000762939453125
]
}
}
}
}

Binary file not shown.