コード例 #1
0
ファイル: UnkAdv.cs プロジェクト: CTR-tools/CTR-LevEdit
        public void Write(BinaryWriterEx bw)
        {
            bw.WriteArrayUInt32(uintDat.ToArray());

            for (int i = 0; i < ttl; i++)
            {
                smth[i].Write(bw);
            }
        }
コード例 #2
0
ファイル: CtrTex.cs プロジェクト: CTR-tools/CTR-LevEdit
        public void Write(BinaryWriterEx bw)
        {
            int pos = (int)bw.BaseStream.Position;

            if (isAnimated)
            {
                if ((pos & 1) != 1)
                {
                    bw.BaseStream.Position -= 1;
                }


                bw.Write(texpos);
                bw.Write(numFrames);
                bw.Write(numFrames);

                bw.Write(0);

                bw.WriteArrayUInt32(ptrs);
                int i = 0;
                foreach (uint ptr in ptrs)
                {
                    bw.Seek((int)ptr + 4, SeekOrigin.Begin);
                    animframes[i].Write(bw);
                    i++;
                }

                bw.Seek((int)texpos + 4, SeekOrigin.Begin);
            }

            bool isWritten = false; //are we trying to re-write data, if so skip writing.

            for (int i = 0; i < 3; i++)
            {
                isWritten = midlods[i].Write(bw);
            }
            if (isWritten == false)
            {
                bw.Write(ptrHi);

                //loosely assume we got a valid pointer
                if (ptrHi > 0x30000 && ptrHi < 0xB0000)
                {
                    bw.Seek((int)ptrHi + 4, SeekOrigin.Begin);

                    for (int i = 0; i < 16; i++)
                    {
                        hi[i].Write(bw);
                    }
                }
            }
        }
コード例 #3
0
 public void Write(BinaryWriterEx bw)
 {
     bw.Write(cntVertex);
     bw.Write(ptrVertex);
     bw.WriteArrayInt16(sizes);
     bw.WriteArrayUInt32(offs);
     for (int i = 0; i < cntVertex; i++)
     {
         verts[i].Write(bw);
     }
     foreach (var face in faces)
     {
         face.Write(bw);
     }
 }
コード例 #4
0
        public void Write(BinaryWriterEx bw)
        {
            bw.WriteArrayInt16(ind);

            bw.Write((ushort)quadFlags);
            //bw.Write(unk1);

            // bw.Write(drawOrderLow);
            bw.Write(bitvalue);
            bw.Write(drawOrderHigh);

            bw.WriteArrayUInt32(ptrTexMid);

            bb.Write(bw);

            bw.Write((byte)terrainFlag);
            bw.Write(WeatherIntensity);
            bw.Write(WeatherType);
            bw.Write(TerrainFlagUnknown);

            bw.Write(id);

            bw.Write(trackPos);
            bw.Write(midunk);

            Debug.Log(bw.BaseStream.Position);
            bw.Write(ptrTexLow);
            bw.Write(offset2);
            Debug.Log(offset2);

            foreach (Vector2s v in unk3)
            {
                v.Write(bw);

                Debug.Log(v);
            }

            Debug.Log(ptrTexLow);

            long texpos = bw.BaseStream.Position;

            bw.Seek((int)ptrTexLow + 4, SeekOrigin.Begin);
            texlow.Write(bw);

            int texIndex = 0;

            Debug.Log((ptrTexLow + 4) / 16 + ", " + ptrTexMid.Length / 16);
            if (38435 == (ptrTexLow + 4) / 16)
            {
                Debug.Log("----------THE INTERESTING ONE----------");
            }
            foreach (uint u in ptrTexMid)
            {
                bw.Seek((int)u + 4, SeekOrigin.Begin);
                if (tex[texIndex] != null)
                {
                    tex[texIndex].Write(bw);
                }
                texIndex++;
            }
            if (38435 == (ptrTexLow + 4) / 16)
            {
                Debug.Log("----------THE INTERESTING ONE----------");
            }
            bw.Seek((int)texpos, SeekOrigin.Begin);
        }