public DBlock(ShaderDataReader datareader, int blockIndex) : base(datareader) { this.blockIndex = blockIndex; name0 = datareader.ReadNullTermStringAtPosition(); datareader.BaseStream.Position += 64; name1 = datareader.ReadNullTermStringAtPosition(); datareader.BaseStream.Position += 64; arg0 = datareader.ReadInt32(); arg1 = datareader.ReadInt32(); arg2 = datareader.ReadInt32(); arg3 = datareader.ReadInt32(); arg4 = datareader.ReadInt32(); arg5 = datareader.ReadInt32(); }
public DConstraintsBlock(ShaderDataReader datareader, int blockIndex) : base(datareader) { this.blockIndex = blockIndex; relRule = datareader.ReadInt32(); arg0 = datareader.ReadInt32(); if (arg0 != 3) { throw new ShaderParserException("unexpected value!"); } // flags at (8) flags = ReadByteFlags(); // range0 at (24) range0 = ReadIntRange(); datareader.BaseStream.Position += 64 - range0.Length * 4; // integer at (88) arg1 = datareader.ReadInt32(); // range1 at (92) range1 = ReadIntRange(); datareader.BaseStream.Position += 60 - range1.Length * 4; // range1 at (152) range2 = ReadIntRange(); datareader.BaseStream.Position += 64 - range2.Length * 4; // there is a provision here for a description, but for the dota2 archive this is always null description = datareader.ReadNullTermStringAtPosition(); datareader.BaseStream.Position += 256; }
public MipmapBlock(ShaderDataReader datareader, int blockIndex) : base(datareader) { this.blockIndex = blockIndex; arg0 = datareader.ReadBytes(4); arg1 = datareader.ReadInt32(); arg2 = datareader.ReadInt32(); arg3 = datareader.ReadInt32(); arg4 = datareader.ReadInt32(); arg5 = datareader.ReadInt32(); name = datareader.ReadNullTermStringAtPosition(); datareader.BaseStream.Position += 256; }
public SfConstraintsBlock(ShaderDataReader datareader, int blockIndex) : base(datareader) { this.blockIndex = blockIndex; relRule = datareader.ReadInt32(); arg0 = datareader.ReadInt32(); // flags are at (8) flags = ReadByteFlags(); // range 0 at (24) range0 = ReadIntRange(); datareader.BaseStream.Position += 68 - range0.Length * 4; // range 1 at (92) range1 = ReadIntRange(); datareader.BaseStream.Position += 60 - range1.Length * 4; // range 2 at (152) range2 = ReadIntRange(); datareader.BaseStream.Position += 64 - range2.Length * 4; description = datareader.ReadNullTermStringAtPosition(); datareader.BaseStream.Position += 256; }
public ParamBlock(ShaderDataReader datareader, int blockIndex, int vcsVersion) : base(datareader) { this.blockIndex = blockIndex; name0 = datareader.ReadNullTermStringAtPosition(); datareader.BaseStream.Position += 64; name1 = datareader.ReadNullTermStringAtPosition(); datareader.BaseStream.Position += 64; type = datareader.ReadInt32(); res0 = datareader.ReadSingle(); name2 = datareader.ReadNullTermStringAtPosition(); datareader.BaseStream.Position += 64; lead0 = datareader.ReadInt32(); if (lead0 == 6 || lead0 == 7) { int dynExpLen = datareader.ReadInt32(); dynExp = datareader.ReadBytes(dynExpLen); } // check to see if this reads 'SBMS' (unknown what this is, instance found in v65 hero_pc_40_features.vcs file) byte[] checkSBMS = datareader.ReadBytesAtPosition(0, 4); if (checkSBMS[0] == 0x53 && checkSBMS[1] == 0x42 && checkSBMS[2] == 0x4D && checkSBMS[3] == 0x53) { // note - bytes are ignored datareader.ReadBytes(4); int dynExpLength = datareader.ReadInt32(); datareader.ReadBytes(dynExpLength); } arg0 = datareader.ReadInt32(); arg1 = datareader.ReadInt32(); arg2 = datareader.ReadInt32(); arg3 = datareader.ReadInt32(); arg4 = datareader.ReadInt32(); if (vcsVersion > 62) { arg5 = datareader.ReadInt32(); } fileref = datareader.ReadNullTermStringAtPosition(); datareader.BaseStream.Position += 64; for (int i = 0; i < 4; i++) { ranges0[i] = datareader.ReadInt32(); } for (int i = 0; i < 4; i++) { ranges1[i] = datareader.ReadInt32(); } for (int i = 0; i < 4; i++) { ranges2[i] = datareader.ReadInt32(); } for (int i = 0; i < 4; i++) { ranges3[i] = datareader.ReadSingle(); } for (int i = 0; i < 4; i++) { ranges4[i] = datareader.ReadSingle(); } for (int i = 0; i < 4; i++) { ranges5[i] = datareader.ReadSingle(); } for (int i = 0; i < 4; i++) { ranges6[i] = datareader.ReadInt32(); } for (int i = 0; i < 4; i++) { ranges7[i] = datareader.ReadInt32(); } command0 = datareader.ReadNullTermStringAtPosition(); datareader.BaseStream.Position += 32; command1 = datareader.ReadNullTermStringAtPosition(); datareader.BaseStream.Position += 32; if (vcsVersion == 65) { v65Data = datareader.ReadBytes(6); } }