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); }
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); }
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; } }
public void Write(BinaryWriterEx bw) { coord.Write(bw); color.Write(bw); color_morph.Write(bw); }