コード例 #1
0
ファイル: PickupHeader.cs プロジェクト: CTR-tools/CTR-LevEdit
        public void Write(BinaryWriterEx bw)
        {
            bw.Write(System.Text.Encoding.ASCII.GetBytes(name));
            for (int i = 0; i < 16 - name.Length; i++)
            {
                bw.Write((byte)0);
            }
            bw.Write(modelOffset);

            scale.Write(bw);

            bw.Write(null1);
            bw.Write(unk1);

            bw.Write((int)0);
            bw.Write((int)0);
            bw.Write((int)0);

            position.Write(bw);
            angle.Write(bw);

            bw.Write(evt);

            bw.Seek((int)modelOffset + 4, SeekOrigin.Begin);
            bw.WriteStringFixed(ModelName);
        }
コード例 #2
0
ファイル: Vertex.cs プロジェクト: CTR-tools/CTR-LevEdit
 public void Write(BinaryWriterEx bw)
 {
     coord.Write(bw);
     color.Write(bw);
     if (color_morph == null)
     {
         color_morph = new Vector4b(0, 0, 0, 0);
     }
     color_morph.Write(bw);
 }
コード例 #3
0
        public void Write(BinaryWriterEx bw, CtrWriteMode mode)
        {
            int pos = 0;

            switch (mode)
            {
            case CtrWriteMode.Header:

                pos = (int)bw.BaseStream.Position;

                bw.Write(name.ToCharArray());
                bw.BaseStream.Position = pos + 16;

                bw.Write(unk0);
                bw.Write(lodDistance);
                bw.Write(billboard);
                scale.Write(bw);

                if (ptrCmd != 0)
                {
                    CtrModel.ptrs.Add((int)bw.BaseStream.Position);
                }
                bw.Write(ptrCmd);

                if (ptrVerts != 0)
                {
                    CtrModel.ptrs.Add((int)bw.BaseStream.Position);
                }
                bw.Write(ptrVerts);

                if (ptrTex != 0)
                {
                    CtrModel.ptrs.Add((int)bw.BaseStream.Position);
                }
                bw.Write(ptrTex);

                if (ptrClut != 0)
                {
                    CtrModel.ptrs.Add((int)bw.BaseStream.Position);
                }
                bw.Write(ptrClut);

                if (unk3 != 0)
                {
                    CtrModel.ptrs.Add((int)bw.BaseStream.Position);
                }
                bw.Write(unk3);

                bw.Write(numAnims);

                if (ptrAnims != 0)
                {
                    CtrModel.ptrs.Add((int)bw.BaseStream.Position);
                }
                bw.Write(ptrAnims);

                if (unk4 != 0)
                {
                    CtrModel.ptrs.Add((int)bw.BaseStream.Position);
                }
                bw.Write(unk4);

                break;

            case CtrWriteMode.Data:

                //write commands

                bw.BaseStream.Position = ptrCmd + 4;

                bw.Write(cmdNum);

                foreach (var c in drawList)
                {
                    bw.Write(c.GetValue());
                }

                bw.Write(0xFFFFFFFF);

                //write vertices

                bw.BaseStream.Position = ptrVerts + 4;

                posOffset.Write(bw);

                bw.BaseStream.Position += 16;

                bw.Write(vrenderMode);

                Console.WriteLine(name);

                foreach (var x in vtx)
                {
                    x.Write(bw);
                    Console.WriteLine(x.X.ToString("X2") + x.Y.ToString("X2") + x.Z.ToString("X2"));
                }

                Console.WriteLine("---");

                //write texturelayouts

                if (tl.Count > 0)
                {
                    bw.BaseStream.Position = ptrTex + 4;

                    pos = (int)bw.BaseStream.Position;

                    for (int i = 0; i < tl.Count; i++)
                    {
                        CtrModel.ptrs.Add((int)bw.BaseStream.Position - 4);
                        bw.Write(pos + 4 * tl.Count + i * 12);
                    }

                    foreach (var t in tl)
                    {
                        t.Write(bw);
                    }
                }

                //write clut

                bw.BaseStream.Position = ptrClut + 4;

                foreach (var x in cols)
                {
                    x.Write(bw);
                    Console.WriteLine(x.X.ToString("X2") + x.Y.ToString("X2") + x.Z.ToString("X2") + x.W.ToString("X2"));
                }

                //Console.ReadKey();


                break;

            default: Helpers.Panic(this, "unknown mode"); break;
            }
        }
コード例 #4
0
ファイル: Vertex.cs プロジェクト: EthanNichols/CTR-tools
 public void Write(BinaryWriterEx bw)
 {
     coord.Write(bw);
     color.Write(bw);
     color_morph.Write(bw);
 }