internal void Write(BinaryWriterEx bw) { bw.WriteInt32(0); bw.WriteInt32(Unk04); bw.WriteInt32(0x2000); bw.WriteInt32(Extended ? 5 : 3); WriteMarker(bw, 0xA3); bw.WriteShiftJISLengthPrefixed(Type, 0x35); bw.WriteInt32(UVNumber); WriteMarker(bw, 0x35); bw.WriteInt32(ShaderDataIndex); if (Extended) { bw.WriteInt32(0xA3); bw.WriteShiftJISLengthPrefixed(Path, 0xBA); bw.WriteInt32(UnkFloats.Length); bw.WriteSingles(UnkFloats); } }
internal void Write(BinaryWriterEx bw) { bw.WriteInt32(0); bw.WriteInt32(Unk04); bw.WriteInt32(0x2000); bw.WriteInt32(3); WriteMarker(bw, 0xA3); bw.WriteShiftJISLengthPrefixed(Type, 0x35); bw.WriteInt32(UVNumber); WriteMarker(bw, 0x35); bw.WriteInt32(ShaderDataIndex); }
internal void Write(BinaryWriterEx bw) { bw.WriteInt32(0); bw.WriteInt32(Unk2); bw.WriteInt32(0x2000); bw.WriteInt32(3); bw.WriteInt32(Unk5); bw.WriteShiftJISLengthPrefixed(Name, 0x35); bw.WriteInt32(Unk6); bw.WriteInt32(Unk7); bw.WriteInt32(ShaderDataIndex); }
internal void Write(BinaryWriterEx bw) { bw.WriteInt32(0); bw.WriteInt32(Unk04); bw.WriteInt32(4); bw.WriteInt32(4); WriteMarker(bw, 0xA3); bw.WriteShiftJISLengthPrefixed(Name, 0xA3); bw.WriteShiftJISLengthPrefixed(Type.ToString().ToLower(), 0x04); bw.WriteInt32(1); bw.WriteInt32(0); bw.ReserveInt32("ValueSize"); int valueStart = (int)bw.Position; if (Type == ParamType.Bool) { bw.WriteByte(0); } else if (Type == ParamType.Int || Type == ParamType.Int2) { bw.WriteByte(1); } else if (Type == ParamType.Float || Type == ParamType.Float2 || Type == ParamType.Float3 || Type == ParamType.Float4) { bw.WriteByte(2); } bw.WriteByte(0x10); bw.WriteByte(0); bw.WriteByte(0); bw.WriteInt32(1); if (Type == ParamType.Bool) { WriteMarker(bw, 0xC0); } else if (Type == ParamType.Int || Type == ParamType.Int2) { WriteMarker(bw, 0xC5); } else if (Type == ParamType.Float || Type == ParamType.Float2 || Type == ParamType.Float3 || Type == ParamType.Float4) { WriteMarker(bw, 0xCA); } if (Type == ParamType.Bool || Type == ParamType.Float || Type == ParamType.Int) { bw.WriteInt32(1); } else if (Type == ParamType.Float2 || Type == ParamType.Int2) { bw.WriteInt32(2); } else if (Type == ParamType.Float3) { bw.WriteInt32(3); } else if (Type == ParamType.Float4) { bw.WriteInt32(4); } if (Type == ParamType.Int) { bw.WriteInt32((int)Value); } else if (Type == ParamType.Int2) { bw.WriteInt32s((int[])Value); } else if (Type == ParamType.Bool) { bw.WriteBoolean((bool)Value); } else if (Type == ParamType.Float) { bw.WriteSingle((float)Value); } else if (Type == ParamType.Float2) { bw.WriteSingles((float[])Value); } else if (Type == ParamType.Float3) { bw.WriteSingles((float[])Value); } else if (Type == ParamType.Float4) { bw.WriteSingles((float[])Value); } bw.FillInt32("ValueSize", (int)bw.Position - valueStart); bw.WriteByte(4); bw.Pad(4); bw.WriteInt32(0); }
internal override void Write(BinaryWriterEx bw) { bw.BigEndian = false; bw.WriteInt32(0); bw.ReserveInt32("FileSize"); int fileStart = (int)bw.Position; bw.WriteInt32(0); bw.WriteInt32(3); WriteMarker(bw, 0x01); bw.WriteInt32(0); bw.WriteInt32(0x1C); bw.WriteInt32(1); bw.WriteInt32(2); WriteMarker(bw, 0xB0); bw.WriteInt32(4); bw.WriteASCII("MTD "); WriteMarker(bw, 0x34); bw.WriteInt32(0x3E8); WriteMarker(bw, 0x01); bw.WriteInt32(0); bw.ReserveInt32("DataSize"); bw.WriteInt32(2); bw.WriteInt32(4); int dataStart = (int)bw.Position; WriteMarker(bw, 0xA3); bw.WriteShiftJISLengthPrefixed(ShaderPath, 0xA3); bw.WriteShiftJISLengthPrefixed(Description, 0x03); bw.WriteInt32(1); bw.WriteInt32(0); bw.ReserveInt32("ParamSize"); bw.WriteInt32(3); bw.WriteInt32(4); WriteMarker(bw, 0xA3); bw.WriteInt32(0); int paramStart = (int)bw.Position; WriteMarker(bw, 0x03); bw.WriteInt32(Params.Count); foreach (Param internalEntry in Params) { internalEntry.Write(bw); } WriteMarker(bw, 0x03); bw.WriteInt32(Textures.Count); foreach (Texture externalEntry in Textures) { externalEntry.Write(bw); } WriteMarker(bw, 0x04); bw.WriteInt32(0); WriteMarker(bw, 0x04); bw.WriteInt32(0); WriteMarker(bw, 0x04); bw.WriteInt32(0); int position = (int)bw.Position; bw.FillInt32("FileSize", position - fileStart); bw.FillInt32("DataSize", position - dataStart); bw.FillInt32("ParamSize", position - paramStart); }