Exemple #1
0
        /// <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!");
            }
        }
Exemple #2
0
 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));
     }
 }
Exemple #3
0
        /// <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);
        }