示例#1
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);
        }
示例#2
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);
        }
 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;
 }