示例#1
0
文件: Pso.cs 项目: fullike/CodeWalker
 public void Write(DataWriter writer)
 {
     writer.Write((uint)EntryNameHash);
     writer.Write(EntryKey);
 }
示例#2
0
文件: Pso.cs 项目: fullike/CodeWalker
 public void Write(DataWriter writer)
 {
     writer.Write(Ident);
     writer.Write(Length);
 }
示例#3
0
 public void Write(DataWriter w, bool hd)
 {
     w.Write(CenterX);
     w.Write(CenterY);
     w.Write(SizeX);
     w.Write(SizeY);
     w.Write(NodeIndex);
     w.Write(NodeCount);
     if (hd)
     {
         w.Write(Short7);
         w.Write(Short8);
         w.Write(Float1);
         w.Write(Byte1);
         w.Write(Byte2);
         w.Write(Byte3);
         w.Write(Byte4);
     }
     else
     {
         w.Write(Byte1);
         w.Write(Byte2);
     }
 }
示例#4
0
文件: Pso.cs 项目: fullike/CodeWalker
 public void Write(DataWriter writer)
 {
     writer.Write((uint)NameHash);
     writer.Write(Offset);
 }
示例#5
0
 public void Write(DataWriter w)
 {
     w.Write(Start);
     w.Write(Count);
     w.Write(DataOffset);
 }
示例#6
0
 public void Write(DataWriter w)
 {
     w.Write(X);
     w.Write(Y);
     w.Write(Z);
 }
示例#7
0
        private void Write(DataWriter w)
        {
            var d = MaxHeights;

            if (Compressed > 0)
            {
                var ch = new CompHeader[Height];
                var d1 = new List <byte>();
                var d2 = new List <byte>();
                for (int y = 0; y < Height; y++)
                {
                    var start = 0;
                    var end   = 0;
                    for (int x = 0; x < Width; x++)
                    {
                        if (MaxHeights[y * Width + x] != 0)
                        {
                            start = x; break;
                        }
                    }
                    for (int x = Width - 1; x >= 0; x--)
                    {
                        if (MaxHeights[y * Width + x] != 0)
                        {
                            end = x + 1; break;
                        }
                    }
                    var count  = end - start;
                    var offset = (count > 0) ? d1.Count - start : 0;
                    for (int i = 0; i < count; i++)
                    {
                        var x = start + i;
                        var n = y * Width + x;
                        d1.Add(MaxHeights[n]);
                        d2.Add(MinHeights[n]);
                    }
                    var h = new CompHeader()
                    {
                        Start = (ushort)start, Count = (ushort)count, DataOffset = offset
                    };
                    ch[y] = h;
                }
                d1.AddRange(d2);//the 2 sets of compressed data are just smushed together
                d           = d1.ToArray();
                CompHeaders = ch;
                Length      = (uint)(d.Length + Height * 8);
            }
            else
            {
                Length = (uint)d.Length;
            }


            w.Write(Magic);
            w.Write(VersionMajor);
            w.Write(VersionMinor);
            w.Write(Pad);
            w.Write(Compressed);
            w.Write(Width);
            w.Write(Height);
            w.Write(BBMin);
            w.Write(BBMax);
            w.Write(Length);
            if (Compressed > 0)
            {
                for (int i = 0; i < Height; i++)
                {
                    CompHeaders[i].Write(w);
                }
            }
            w.Write(d);
        }
示例#8
0
        public void Write(DataWriter w)
        {
            w.Write(Name);
            w.Write(ParentName);
            w.Write(ContentFlags);
            w.Write(streamingExtentsMin);
            w.Write(streamingExtentsMax);
            w.Write(entitiesExtentsMin);
            w.Write(entitiesExtentsMax);
            w.Write(Unk1);
            w.Write(Unk2);
            w.Write(Unk3);
            w.Write(Unk4);

            //if (Unk4 == 0xFE)
            //{
            //    if (UnkExtra == null)
            //    {
            //        UnkExtra = new MapDataStoreNodeExtra();
            //    }
            //    UnkExtra.Write(w);
            //}
        }
示例#9
0
 public void Write(DataWriter w)
 {
     w.Write(Unk01);
     w.Write(Unk02);
     w.Write(Unk03);
     w.Write(Name);
     w.Write(Parent);
     w.Write(Position);
     w.Write(Orientation.ToVector4());
     w.Write(BBMin);
     w.Write(BBMax);
     w.Write(Unk11);
     w.Write(Unk12);
     w.Write(Unk13);
     w.Write(Unk14);
 }
示例#10
0
        public byte[] Save()
        {
            MemoryStream s = new MemoryStream();
            DataWriter   w = new DataWriter(s, Endianess.LittleEndian);

            w.Write("[VERSION]\n" + Version + "\n");
            while (w.Position < 100)
            {
                w.Write((byte)0);
            }

            WriteString(w, "<fileDates>\n");
            if (FileDates != null)
            {
                foreach (var d in FileDates)
                {
                    WriteString(w, d.ToCacheFileString());
                    WriteString(w, "\n");
                }
            }
            WriteString(w, "</fileDates>\n");
            WriteString(w, "<module>\nfwMapDataStore\n");
            var modlen = (AllMapNodes?.Length ?? 0) * 64;

            //if (AllMapNodes != null)
            //{
            //    foreach (var n in AllMapNodes)
            //    {
            //        if (n.Unk4 == 0xFE)
            //        {
            //            modlen += 96;
            //        }
            //    }
            //}
            w.Write(modlen);
            if (AllMapNodes != null)
            {
                foreach (var n in AllMapNodes)
                {
                    n.Write(w);
                }
            }
            WriteString(w, "</module>\n");
            WriteString(w, "<module>\nCInteriorProxy\n");
            w.Write((AllCInteriorProxies?.Length ?? 0) * 104);
            if (AllCInteriorProxies != null)
            {
                foreach (var p in AllCInteriorProxies)
                {
                    p.Write(w);
                }
            }
            WriteString(w, "</module>\n");
            WriteString(w, "<module>\nBoundsStore\n");
            w.Write((AllBoundsStoreItems?.Length ?? 0) * 32);
            if (AllBoundsStoreItems != null)
            {
                foreach (var b in AllBoundsStoreItems)
                {
                    b.Write(w);
                }
            }
            WriteString(w, "</module>\n");


            var buf = new byte[s.Length];

            s.Position = 0;
            s.Read(buf, 0, buf.Length);
            return(buf);
        }
示例#11
0
 private void Write(DataWriter w)
 {
     w.Write(Magic);
 }