Enhance property encoding and class descriptor retrieval in rbx_dom_lua

- Introduced a new function, `findClassDescriptor`, to retrieve class properties and metadata, including inherited properties, from the database.
- Updated `encodeInstance` to include encoding for Tags alongside Attributes, ensuring comprehensive property serialization.
- Improved property filtering logic to skip non-serializable properties and those matching default values, aligning with syncback behavior.
- Enhanced comments for clarity on property handling and encoding processes.
This commit is contained in:
Joe 2026-01-30 13:18:20 -06:00
parent c0d089f0aa
commit dccd3a691a
6 changed files with 188 additions and 62 deletions

View file

@ -31,7 +31,7 @@ use crate::{
pub use file_names::{extension_for_middleware, name_for_inst, validate_file_name};
pub use fs_snapshot::FsSnapshot;
pub use hash::*;
pub use property_filter::{filter_properties, filter_properties_preallocated};
pub use property_filter::{filter_properties, filter_properties_preallocated, should_property_serialize};
pub use snapshot::{inst_path, SyncbackData, SyncbackSnapshot};
/// The name of an enviroment variable to use to override the behavior of

View file

@ -77,7 +77,9 @@ pub fn filter_properties_preallocated<'inst>(
}
}
fn should_property_serialize(class_name: &str, prop_name: &str) -> bool {
/// Checks if a property should serialize based on the reflection database.
/// Returns false for properties with DoesNotSerialize serialization, true otherwise.
pub fn should_property_serialize(class_name: &str, prop_name: &str) -> bool {
let database = rbx_reflection_database::get().unwrap();
let mut current_class_name = class_name;