public bool IsMember(UField membersClass)
 {
     for (var p = membersClass; p != null; p = p.Super)
     {
         if (Outer == p)
         {
             return(true);
         }
     }
     return(false);
 }
Exemplo n.º 2
0
        protected override void Deserialize()
        {
            base.Deserialize();

            // _SuperIndex got moved into UStruct since 700+
            if ((Package.Version < 756
#if SPECIALFORCE2
                 || Package.Build == UnrealPackage.GameBuild.BuildName.SpecialForce2
#endif
#if TRANSFORMERS
                 || Package.Build == UnrealPackage.GameBuild.BuildName.Transformers
#endif
                 )
#if BIOSHOCK
                && Package.Build != UnrealPackage.GameBuild.BuildName.Bioshock_Infinite
#endif
                )
            {
                Super = GetIndexObject(_Buffer.ReadObjectIndex()) as UField;
                Record("Super", Super);

                NextField = GetIndexObject(_Buffer.ReadObjectIndex()) as UField;
                Record("NextField", NextField);
            }
            else
            {
                NextField = GetIndexObject(_Buffer.ReadObjectIndex()) as UField;
                Record("NextField", NextField);

                // Should actually resist in UStruct
                if (this is UStruct)
                {
                    Super = GetIndexObject(_Buffer.ReadObjectIndex()) as UField;
                    Record("Super", Super);
                }
            }
        }
            public void Deserialize(IUnrealStream stream)
            {
                if (stream.Version <= 540)
                {
                    // e.g. Core.Object.X
                    _FieldName = stream.ReadText();
                }
                else
                {
                    // TODO: Possibly linked to a non-ufield?
                    _Field          = (UField)stream.ReadObject();
                    _Field.MetaData = this;
                }

                int length = stream.ReadInt32();

                Tags = new Dictionary <string, string>(length);
                for (var i = 0; i < length; ++i)
                {
                    var    key   = stream.ReadNameReference();
                    string value = stream.ReadText();
                    Tags.Add(key.Name, value);
                }
            }