private bool ReadProperty(UnPropertyList result) { var nameIndex = _reader.ReadInt64(); var name = _package.Names[(int)nameIndex].Name; if (name == "None") return false; var typeIndex = _reader.ReadInt64(); var type = _package.Names[(int)typeIndex].Name; var valueSize = _reader.ReadInt32(); var i = _reader.ReadInt32(); object value; if (type == "StructProperty") { _reader.ReadInt64(); // struct name index var pos = _reader.BaseStream.Position; value = ReadStructProperty(_owner, name); _reader.BaseStream.Position = pos + valueSize; if (value == null) return true; // skip native structs } else { var pos = _reader.BaseStream.Position; value = ReadSingleValue(_owner, name, type); if (value == null) { _reader.BaseStream.Position = pos; value = _reader.ReadBytes(valueSize); } } result.AddProperty(name, type, value); return true; }
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); }
public UnPropertyList Read() { var result = new UnPropertyList(_export); _reader.ReadInt32(); while (true) { if (!ReadProperty(result)) break; } return result; }
public UnPropertyList Read() { var result = new UnPropertyList(_export); _reader.ReadInt32(); while (true) { if (!ReadProperty(result)) { break; } } return(result); }
private bool ReadProperty(UnPropertyList result) { var nameIndex = _reader.ReadInt64(); var name = _package.Names[(int)nameIndex].Name; if (name == "None") { return(false); } var typeIndex = _reader.ReadInt64(); var type = _package.Names[(int)typeIndex].Name; var valueSize = _reader.ReadInt32(); var i = _reader.ReadInt32(); object value; if (type == "StructProperty") { _reader.ReadInt64(); // struct name index var pos = _reader.BaseStream.Position; value = ReadStructProperty(_owner, name); _reader.BaseStream.Position = pos + valueSize; if (value == null) { return(true); // skip native structs } } else { var pos = _reader.BaseStream.Position; value = ReadSingleValue(_owner, name, type); if (value == null) { _reader.BaseStream.Position = pos; value = _reader.ReadBytes(valueSize); } } result.AddProperty(name, type, value); return(true); }
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 string StructToString(UnPropertyList value) { if (value == null) return "?"; var result = value.Properties.Aggregate("", (s, prop) => s + "," + prop.Name + "=" + ValueToString(prop.Value, prop.Type)); return "(" + (result.Length > 0 ? result.Substring(1) : 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; }
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; }