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;
 }
Example #2
0
        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;
 }
Example #4
0
        public UnPropertyList Read()
        {
            var result = new UnPropertyList(_export);

            _reader.ReadInt32();
            while (true)
            {
                if (!ReadProperty(result))
                {
                    break;
                }
            }
            return(result);
        }
Example #5
0
        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);
        }
Example #6
0
        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);
        }
Example #7
0
 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;
        }