示例#1
0
        protected override void Parse(Stream s)
        {
            BinaryReader r = new BinaryReader(s);

            tag = r.ReadUInt32();
            if (checking)
            {
                if (tag != (uint)FOURCC("MTST"))
                {
                    throw new InvalidDataException(String.Format("Invalid Tag read: '{0}'; expected: 'MTST'; at 0x{1:X8}", FOURCC(tag), s.Position));
                }
            }
            version = r.ReadUInt32();
            if (checking)
            {
                if (version != 0x00000200)
                {
                    throw new InvalidDataException(String.Format("Invalid Version read: 0x{0:X8}; expected 0x00000200; at 0x{1:X8}", version, s.Position));
                }
            }

            nameHash = r.ReadUInt32();
            index    = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, s);
            list     = new EntryList(OnRCOLChanged, s);
        }
示例#2
0
 public MTST(int APIversion, EventHandler handler, uint nameHash, GenericRCOLResource.ChunkReference index, IEnumerable <Entry> list)
     : base(APIversion, handler, null)
 {
     this.nameHash = nameHash;
     this.index    = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, index);
     this.list     = list == null ? null : new EntryList(OnRCOLChanged, list);
 }
示例#3
0
 void Parse(Stream s)
 {
     if (_RCOLTag == "GEOM")
     {
         index = new BinaryReader(s).ReadInt32();
     }
     else
     {
         data = new GenericRCOLResource.ChunkReference(0, handler, s);
     }
     ReadZeros(s, 12);
 }
示例#4
0
 public ElementTextureRef(int APIversion, EventHandler handler, ElementTextureRef basis, DependentList <TGIBlock> ParentTGIBlocks = null, string RCOLTag = null)
     : this(APIversion, handler, basis.field, ParentTGIBlocks ?? basis._ParentTGIBlocks, RCOLTag ?? basis._RCOLTag)
 {
     if (_RCOLTag == "GEOM")
     {
         index = basis.index;
     }
     else
     {
         data = new GenericRCOLResource.ChunkReference(0, handler, basis.data);
     }
 }
示例#5
0
 public ElementTextureRef(int APIversion, EventHandler handler, DependentList <TGIBlock> ParentTGIBlocks = null, string RCOLTag = "MATD")
     : this(APIversion, handler, (FieldType)0, ParentTGIBlocks, RCOLTag)
 {
     if (_RCOLTag == "GEOM")
     {
         index = 0;
     }
     else
     {
         data = new GenericRCOLResource.ChunkReference(0, handler);
     }
 }
示例#6
0
        public override Stream UnParse()
        {
            MemoryStream ms = new MemoryStream();
            BinaryWriter w  = new BinaryWriter(ms);

            w.Write(tag);
            w.Write(version);

            w.Write(nameHash);
            if (index == null)
            {
                this.index = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, 0);
            }
            index.UnParse(ms);
            if (list == null)
            {
                this.list = new EntryList(OnRCOLChanged);
            }
            list.UnParse(ms);

            return(ms);
        }
示例#7
0
 public ElementTextureRef(int APIversion, EventHandler handler, FieldType field, GenericRCOLResource.ChunkReference data)
     : this(APIversion, handler, field, null, "MATD")
 {
     this.data = new GenericRCOLResource.ChunkReference(0, handler, data);
 }
示例#8
0
 void Parse(Stream s)
 {
     index = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, s); materialState = (State) new BinaryReader(s).ReadUInt32();
 }
示例#9
0
 public Entry(int APIversion, EventHandler handler, GenericRCOLResource.ChunkReference index, State materialSet)
     : base(APIversion, handler)
 {
     this.index         = new GenericRCOLResource.ChunkReference(requestedApiVersion, handler, index);
     this.materialState = materialSet;
 }