/// <summary> /// Read a PrmEntry from PRM. /// </summary> /// <param name="br">Binary Reader to use.</param> public PrmEntry(DhBinaryReader br) { // Read Hash. Hash = br.ReadU16(); // Read NameLength. NameLength = br.ReadU16(); // Read Name. Name = br.ReadStr(NameLength); // Read ValueLength. ValueLength = br.ReadU32(); // Resolve Type from Hash. Type = PRMUtils.HashToType(Hash); // Check Type. switch (Type) { case PrmType.BYTE: // Read Value as a byte. Value = br.Read(); break; case PrmType.SHORT: // Read Value as a short. Value = br.ReadS16(); break; case PrmType.INT: // Read Value as a int. Value = br.ReadS32(); break; case PrmType.FLOAT: // Read Value as a float. Value = br.ReadF32(); break; case PrmType.RGBA: // Read Value as a Clr4. Value = br.ReadClr4(); break; case PrmType.VECTOR3: // Read Value as a Vector3. Value = br.ReadVec3(); break; default: throw new NotImplementedException("PRM parameter entry type is unknown!"); } }
public MDLMaterial(DhBinaryReader br, List <MDLSampler> samplers) { DiffuseColor = br.ReadClr4(); Unknown1 = br.ReadS16(); AlphaFlag = br.ReadU8(); TevStageCount = br.ReadU8(); Unknown2 = br.ReadU8(); br.Skip(23); TevStages = new List <MDLTevStage>(); for (int i = 0; i < 8; i++) { TevStages.Add(new MDLTevStage(br)); } }
/// <summary> /// Read a single shader from BIN. /// </summary> /// <param name="br">Binary Reader to use.</param> public Shader(DhBinaryReader br) { // Read Dynamic Lighting Flag. UseDynamicLighting = br.ReadBool8(); // Read Unknown 2. Unknown2 = br.Read(); // Read Unknown 3. Unknown3 = br.Read(); // Read Tint. Tint = br.ReadClr4(); // Read Unknown 4. (Padding) Unknown4 = br.Read(); // Read Material Indices array. MaterialIndices = br.ReadS16s(8); // Read Unknown 5 array. (Indices?) Unknown5 = br.ReadS16s(8); }