private bool ReadStructValues(UnExport scriptStruct, UnPropertyList result) { bool haveUnknownValues = false; var structInstance = (UnScriptStruct)scriptStruct.ReadInstance(); if (structInstance.Super != null) { haveUnknownValues = ReadStructValues(structInstance.Super.Resolve(), result); } foreach (UnExport e in scriptStruct.Children.Reverse()) { object value; if (haveUnknownValues) { value = null; } else if (e.ClassName == "StrProperty") { ReadProperty(result); continue; } else { value = ReadSingleValue(structInstance, e.ObjectName, e.ClassName); if (value == null) { haveUnknownValues = true; } } result.AddProperty(e.ObjectName, e.ClassName, value); } return(haveUnknownValues); }
private UnPropertyList ReadStructProperty(UnContainer owner, string name) { var export = owner.FindMemberExport(name); if (export == null) { return(null); } var declaration = (UnTypedClassProperty)export.ReadInstance(); var typeDeclaration = declaration.Type; UnExport scriptStruct = typeDeclaration.Resolve(); var structInstance = (UnScriptStruct)scriptStruct.ReadInstance(); if (structInstance.Native) { return(null); } var result = new UnPropertyList(null); ReadStructValues(scriptStruct, result); return(result); }
private bool ReadStructValues(UnExport scriptStruct, UnPropertyList result) { bool haveUnknownValues = false; var structInstance = (UnScriptStruct) scriptStruct.ReadInstance(); if (structInstance.Super != null) { haveUnknownValues = ReadStructValues(structInstance.Super.Resolve(), result); } foreach (UnExport e in scriptStruct.Children.Reverse()) { object value; if (haveUnknownValues) value = null; else if (e.ClassName == "StrProperty") { ReadProperty(result); continue; } else { value = ReadSingleValue(structInstance, e.ObjectName, e.ClassName); if (value == null) haveUnknownValues = true; } result.AddProperty(e.ObjectName, e.ClassName, value); } return haveUnknownValues; }