Exemple #1
0
 public override uint GetSize(NiHeader header)
 {
     if (!((header.GetVersion() == 335675399U) && (header.GetUserVersion() >= 11) && (header.GetUserVersion2() > 21)))
     {
         return(base.GetSize(header) + 56U);
     }
     else if ((header.GetVersion() == 335675399U) && (header.GetUserVersion() >= 11) && (header.GetUserVersion2() > 21))
     {
         return(base.GetSize(header) + 36U);
     }
     else
     {
         return(base.GetSize(header) + 32U);
     }
 }
Exemple #2
0
 public override void Read(NiHeader header, BinaryReader reader)
 {
     base.Read(header, reader);
     this.data         = reader.ReadInt32();
     this.skinInstance = reader.ReadInt32();
     if (header.GetVersion() > 335544325U)
     {
         this.numMaterials = reader.ReadUInt32();
         for (int index = 0; (long)index < (long)this.numMaterials; ++index)
         {
             this.materialNames.Add(reader.ReadUInt32());
         }
         for (int index = 0; (long)index < (long)this.numMaterials; ++index)
         {
             this.materialExtraData.Add(reader.ReadInt32());
         }
         this.activeMaterial = reader.ReadInt32();
         this.dirtyFlag      = Utils.ReadBool(reader);
         if (header.GetUserVersion() == 12)
         {
             this.bsProperties[0] = reader.ReadInt32();
             this.bsProperties[1] = reader.ReadInt32();
         }
     }
     else
     {
         this.hasShader = Utils.ReadBool(reader);
         if (!this.hasShader)
         {
             return;
         }
         this.shaderName = Utils.ReadSizedString(reader);
         this.unknownInt = reader.ReadInt32();
     }
 }
 public override void Read(NiHeader header, BinaryReader reader)
 {
     base.Read(header, reader);
     this.shaderFlags1        = reader.ReadUInt32();
     this.shaderFlags2        = reader.ReadUInt32();
     this.uvOffset            = Utils.ReadUVCoord(reader);
     this.uvScale             = Utils.ReadUVCoord(reader);
     this.sourceTexture       = Utils.ReadSizedString(reader);
     this.textureClampMode    = reader.ReadUInt32();
     this.falloffStartAngle   = reader.ReadSingle();
     this.falloffStopAngle    = reader.ReadSingle();
     this.falloffStartOpacity = reader.ReadSingle();
     this.falloffStopOpacity  = reader.ReadSingle();
     this.emissiveColor       = Utils.ReadColor4(reader);
     this.emissiveMultiple    = reader.ReadSingle();
     this.softFalloffDepth    = reader.ReadSingle();
     this.greyscaleTexture    = Utils.ReadSizedString(reader);
     if (header.GetVersion() == 335675399U && header.GetUserVersion2() == 130)
     {
         this.envMapTexture      = Utils.ReadSizedString(reader);
         this.normalTexture      = Utils.ReadSizedString(reader);
         this.envMaskTexture     = Utils.ReadSizedString(reader);
         this.enviromentMapScale = reader.ReadSingle();
     }
 }
Exemple #4
0
 public override uint GetSize(NiHeader header)
 {
     if (header.GetUserVersion2() == 100 || header.GetUserVersion2() == 130)
     {
         return(base.GetSize(header) + 28U);
     }
     else
     {
         if (header.GetVersion() > 335544325U)
         {
             if (header.GetUserVersion() == 12)
             {
                 return(base.GetSize(header) + 25U + this.numMaterials * (uint)this.materialNames.Count + this.numMaterials * (uint)this.materialExtraData.Count);
             }
             else
             {
                 return(base.GetSize(header) + 17U + this.numMaterials * (uint)this.materialNames.Count + this.numMaterials * (uint)this.materialExtraData.Count);
             }
         }
         else
         {
             if (this.hasShader)
             {
                 return(base.GetSize(header) + 13U + (uint)this.shaderName.Length);
             }
             else
             {
                 return(base.GetSize(header) + 9U);
             }
         }
     }
 }
Exemple #5
0
        public override void Write(NiHeader header, BinaryWriter writer)
        {
            List <int> blockReferences = header.GetBlockReferences();

            if (blockReferences.Count > 0)
            {
                if (this.collisionObject != -1)
                {
                    this.collisionObject = blockReferences[this.collisionObject];
                }
            }
            base.Write(header, writer);
            writer.Write(this.flags);
            if ((header.GetUserVersion() >= 11U) && (header.GetUserVersion2() >= 26U))
            {
                writer.Write(this.flags2);
            }
            Utils.WriteVector3(writer, this.translation);
            Utils.WriteMatrix33(writer, this.rotation);
            writer.Write(this.scale);
            if ((header.GetVersion() <= 335544325U) || (header.GetUserVersion() <= 11U))
            {
                writer.Write((uint)this.properties.Count);
                for (int index = 0; (long)index < this.properties.Count; ++index)
                {
                    if (blockReferences.Count > 0)
                    {
                        this.properties[index] = blockReferences[this.properties[index]];
                    }
                    writer.Write(this.properties[index]);
                }
            }
            writer.Write(this.collisionObject);
        }
 public override void Read(NiHeader header, BinaryReader reader)
 {
     base.Read(header, reader);
     if (!((header.GetVersion() == 335675399U) && (header.GetUserVersion() >= 11) && (header.GetUserVersion2() > 21)))
     {
         this.ambientColor = Utils.ReadColor3(reader);
         this.diffuseColor = Utils.ReadColor3(reader);
     }
     this.specularColor = Utils.ReadColor3(reader);
     this.emissiveColor = Utils.ReadColor3(reader);
     this.glossiness = reader.ReadSingle();
     this.alpha = reader.ReadSingle();
     if ((header.GetVersion() == 335675399U) && (header.GetUserVersion() >= 11) && (header.GetUserVersion2() > 21))
     {
         this.emitMulti = reader.ReadSingle();
     }
 }
Exemple #7
0
 public override void Read(NiHeader header, BinaryReader reader)
 {
     base.Read(header, reader);
     if (!((header.GetVersion() == 335675399U) && (header.GetUserVersion() >= 11) && (header.GetUserVersion2() > 21)))
     {
         this.ambientColor = Utils.ReadColor3(reader);
         this.diffuseColor = Utils.ReadColor3(reader);
     }
     this.specularColor = Utils.ReadColor3(reader);
     this.emissiveColor = Utils.ReadColor3(reader);
     this.glossiness    = reader.ReadSingle();
     this.alpha         = reader.ReadSingle();
     if ((header.GetVersion() == 335675399U) && (header.GetUserVersion() >= 11) && (header.GetUserVersion2() > 21))
     {
         this.emitMulti = reader.ReadSingle();
     }
 }
 public override void Read(NiHeader header, BinaryReader reader)
 {
     base.Read(header, reader);
     if (header.GetVersion() > 335544325U)
         this.stringDataIdx = reader.ReadInt32();
     else
         this.stringData = Utils.ReadSizedString(reader);
 }
Exemple #9
0
 public override void Write(NiHeader header, BinaryWriter writer)
 {
     base.Write(header, writer);
     if (!((header.GetVersion() == 335675399U) && (header.GetUserVersion() >= 11) && (header.GetUserVersion2() > 21)))
     {
         Utils.WriteColor3(writer, this.ambientColor);
         Utils.WriteColor3(writer, this.diffuseColor);
     }
     Utils.WriteColor3(writer, this.specularColor);
     Utils.WriteColor3(writer, this.emissiveColor);
     writer.Write(this.glossiness);
     writer.Write(this.alpha);
     if ((header.GetVersion() == 335675399U) && (header.GetUserVersion() >= 11) && (header.GetUserVersion2() > 21))
     {
         writer.Write(this.emitMulti);
     }
 }
Exemple #10
0
 public override void Read(NiHeader header, BinaryReader reader)
 {
     Utils.ReadString(reader, header.GetVersion(), out this.nameIdx, out this.name);
     this.numExtraData = reader.ReadUInt32();
     for (int index = 0; (long)index < (long)this.numExtraData; ++index)
     {
         this.extraData.Add(reader.ReadInt32());
     }
     this.controller = reader.ReadInt32();
 }
 public override void Read(NiHeader header, BinaryReader reader)
 {
     Utils.ReadString(reader, header.GetVersion(), out this.nameIdx, out this.name);
     this.numExtraData = reader.ReadUInt32();
     for (int index = 0; (long)index < (long)this.numExtraData; ++index)
     {
         this.extraData.Add(reader.ReadInt32());
     }
     this.controller = reader.ReadInt32();
 }
 public override void Read(NiHeader header, BinaryReader reader)
 {
     base.Read(header, reader);
     if (header.GetVersion() > 335544325U)
     {
         this.nameIdx = reader.ReadInt32();
     }
     else
     {
         this.name = Utils.ReadSizedString(reader);
     }
 }
Exemple #13
0
 public override void Read(NiHeader header, BinaryReader reader)
 {
     base.Read(header, reader);
     if (header.GetVersion() <= 335544325U)
     {
         this.stencilEnabled  = reader.ReadByte();
         this.stencilFunction = reader.ReadUInt32();
         this.stencilRef      = reader.ReadUInt32();
         this.stencilMask     = reader.ReadUInt32();
         this.failAction      = reader.ReadUInt32();
         this.zFailAction     = reader.ReadUInt32();
         this.passAction      = reader.ReadUInt32();
         this.drawMode        = reader.ReadUInt32();
     }
     if (header.GetVersion() >= 335609859U)
     {
         this.flags       = reader.ReadUInt16();
         this.stencilRef  = reader.ReadUInt32();
         this.stencilMask = reader.ReadUInt32();
     }
 }
 public override void Read(NiHeader header, BinaryReader reader)
 {
     base.Read(header, reader);
     if (header.GetVersion() <= 335544325U)
     {
         this.stencilEnabled = reader.ReadByte();
         this.stencilFunction = reader.ReadUInt32();
         this.stencilRef = reader.ReadUInt32();
         this.stencilMask = reader.ReadUInt32();
         this.failAction = reader.ReadUInt32();
         this.zFailAction = reader.ReadUInt32();
         this.passAction = reader.ReadUInt32();
         this.drawMode = reader.ReadUInt32();
     }
     if (header.GetVersion() >= 335609859U)
     {
         this.flags = reader.ReadUInt16();
         this.stencilRef = reader.ReadUInt32();
         this.stencilMask = reader.ReadUInt32();
     }
 }
Exemple #15
0
        public override uint GetSize(NiHeader header)
        {
            uint size = base.GetSize(header) + 58U;

            if ((header.GetUserVersion() >= 11U) && (header.GetUserVersion2() >= 26U))
            {
                size += 2;
            }
            if ((header.GetVersion() <= 335544325U) || (header.GetUserVersion() <= 11U))
            {
                size += 4 + 4 * (uint)this.properties.Count;
            }
            return(size);
        }
Exemple #16
0
        public override void Write(NiHeader header, BinaryWriter writer)
        {
            List <int> blockReferences = header.GetBlockReferences();

            if (blockReferences.Count > 0)
            {
                if (this.controller != -1)
                {
                    this.controller = blockReferences[this.controller];
                }
            }
            base.Write(header, writer);
            if (header.GetVersion() <= 335544325U)
            {
                if (this.name != "")
                {
                    Utils.WriteSizedString(writer, this.name);
                }
                else if (this.nameIdx == -1)
                {
                    Utils.WriteSizedString(writer, "Scene Root");
                }
                else
                {
                    Utils.WriteSizedString(writer, header.GetString((uint)this.nameIdx));
                }
            }
            else
            {
                writer.Write(this.nameIdx);
            }
            writer.Write(this.extraData.Count);
            if (this.extraData.Count > 0)
            {
                for (int index = 0; index < this.extraData.Count; index++)
                {
                    if (blockReferences.Count > 0)
                    {
                        if (this.extraData[index] != -1)
                        {
                            this.extraData[index] = blockReferences[this.extraData[index]];
                        }
                    }
                    writer.Write(this.extraData[index]);
                }
            }
            writer.Write(controller);
        }
Exemple #17
0
 public override void Read(NiHeader header, BinaryReader reader)
 {
     base.Read(header, reader);
     this.flags = reader.ReadUInt16();
     if ((header.GetUserVersion() >= 11U) && (header.GetUserVersion2() >= 26U))
     {
         this.flags2 = reader.ReadUInt16();
     }
     this.translation = Utils.ReadVector3(reader);
     this.rotation    = Utils.ReadMatrix33(reader);
     this.scale       = reader.ReadSingle();
     if ((header.GetVersion() <= 335544325U) || (header.GetUserVersion() <= 11U))
     {
         this.numProperties = reader.ReadUInt32();
         for (int index = 0; (long)index < (long)this.numProperties; ++index)
         {
             this.properties.Add(reader.ReadInt32());
         }
     }
     this.collisionObject = reader.ReadInt32();
 }
Exemple #18
0
        public override uint GetSize(NiHeader header)
        {
            uint num = base.GetSize(header) + 88U;

            if (header.GetVersion() == 335675399U && header.GetUserVersion2() == 130)
            {
                num += 40U;
            }
            if ((int)this.shaderType == 1)
            {
                num += 4U;
            }
            else if ((int)this.shaderType == 5)
            {
                num += 12U;
            }
            else if ((int)this.shaderType == 6)
            {
                num += 12U;
            }
            else if ((int)this.shaderType == 7)
            {
                num += 8U;
            }
            else if ((int)this.shaderType == 11)
            {
                num += 20U;
            }
            else if ((int)this.shaderType == 14)
            {
                num += 16U;
            }
            else if ((int)this.shaderType == 16)
            {
                num += 28U;
            }
            return(num);
        }
 public override void Read(NiHeader header, BinaryReader reader)
 {
     base.Read(header, reader);
     this.data = reader.ReadInt32();
     this.skinInstance = reader.ReadInt32();
     if (header.GetVersion() > 335544325U)
     {
         this.numMaterials = reader.ReadUInt32();
         for (int index = 0; (long)index < (long)this.numMaterials; ++index)
             this.materialNames.Add(reader.ReadUInt32());
         for (int index = 0; (long)index < (long)this.numMaterials; ++index)
             this.materialExtraData.Add(reader.ReadInt32());
         this.activeMaterial = reader.ReadInt32();
         this.dirtyFlag = Utils.ReadBool(reader);
         if (header.GetUserVersion() == 12)
         {
             this.bsProperties[0] = reader.ReadInt32();
             this.bsProperties[1] = reader.ReadInt32();
         }
     }
     else
     {
         this.hasShader = Utils.ReadBool(reader);
         if (!this.hasShader)
             return;
         this.shaderName = Utils.ReadSizedString(reader);
         this.unknownInt = reader.ReadInt32();
     }
 }
 public override void Read(NiHeader header, BinaryReader reader)
 {
     base.Read(header, reader);
     this.flags = reader.ReadUInt16();
     if ((header.GetUserVersion() >= 11U) && (header.GetUserVersion2() >= 26U))
         this.flags2 = reader.ReadUInt16();
     this.translation = Utils.ReadVector3(reader);
     this.rotation = Utils.ReadMatrix33(reader);
     this.scale = reader.ReadSingle();
     if ((header.GetVersion() <= 335544325U) || (header.GetUserVersion() <= 11U))
     {
         this.numProperties = reader.ReadUInt32();
         for (int index = 0; (long)index < (long)this.numProperties; ++index)
             this.properties.Add(reader.ReadInt32());
     }
     else
     {
     }
     this.collisionObject = reader.ReadInt32();
 }
Exemple #21
0
 public override void Read(NiHeader header, BinaryReader reader)
 {
     this.shaderType = reader.ReadUInt32();
     base.Read(header, reader);
     this.shaderFlags1     = reader.ReadUInt32();
     this.shaderFlags2     = reader.ReadUInt32();
     this.uvOffset         = Utils.ReadUVCoord(reader);
     this.uvScale          = Utils.ReadUVCoord(reader);
     this.textureSet       = reader.ReadInt32();
     this.emissiveColor    = Utils.ReadColor3(reader);
     this.emissiveMultiple = reader.ReadSingle();
     if (header.GetVersion() == 335675399U && header.GetUserVersion2() == 130)
     {
         this.wetMaterialIdx = reader.ReadInt32();
         if (this.wetMaterialIdx != -1)
         {
             this.wetMaterialName = header.GetString((uint)this.wetMaterialIdx);
         }
     }
     this.textureClampMode   = reader.ReadUInt32();
     this.alpha              = reader.ReadSingle();
     this.refractionStrength = reader.ReadSingle();
     this.glossiness         = reader.ReadSingle();
     this.specularColor      = Utils.ReadColor3(reader);
     this.specularStrength   = reader.ReadSingle();
     if (header.GetVersion() == 335675399U && header.GetUserVersion2() == 130)
     {
         this.subsurfaceRolloff       = reader.ReadSingle();
         this.unkownFloat1            = reader.ReadSingle();
         this.backlightPower          = reader.ReadSingle();
         this.grayscaleToPaletteScale = reader.ReadSingle();
         this.fresnelPower            = reader.ReadSingle();
         this.wetnessSpecScale        = reader.ReadSingle();
         this.wetnessSpecPower        = reader.ReadSingle();
         this.wetnessMinVar           = reader.ReadSingle();
         this.wetnessEnvMapScale      = reader.ReadSingle();
         this.wetnessFresnelPower     = reader.ReadSingle();
         this.wetnessMetalness        = reader.ReadSingle();
     }
     else
     {
         this.lightingEffect1 = reader.ReadSingle();
         this.lightingEffect2 = reader.ReadSingle();
     }
     if ((int)this.shaderType == 1)
     {
         this.environmentMapScale = reader.ReadSingle();
         if (header.GetVersion() == 335675399U && header.GetUserVersion2() == 130)
         {
             this.unkownEnvMapInt = reader.ReadUInt16();
         }
     }
     else if ((int)this.shaderType == 5)
     {
         this.skinTintColor = Utils.ReadColor3(reader);
         if (header.GetVersion() == 335675399U && header.GetUserVersion2() == 130)
         {
             this.unkownSkinTintInt = reader.ReadUInt32();
         }
     }
     else if ((int)this.shaderType == 6)
     {
         this.hairTintColor = Utils.ReadColor3(reader);
     }
     else if ((int)this.shaderType == 7)
     {
         this.maxPasses = reader.ReadSingle();
         this.scale     = reader.ReadSingle();
     }
     else if ((int)this.shaderType == 11)
     {
         this.parallaxInnerLayerThickness    = reader.ReadSingle();
         this.parallaxRefractionScale        = reader.ReadSingle();
         this.parallaxInnerLayerTextureScale = Utils.ReadUVCoord(reader);
         this.parallaxEnvmapStrength         = reader.ReadSingle();
     }
     else if ((int)this.shaderType == 14)
     {
         this.sparkleParameters = Utils.ReadVector4(reader);
     }
     else
     {
         if ((int)this.shaderType != 16)
         {
             return;
         }
         this.eyeCubemapScale          = reader.ReadSingle();
         this.leftEyeReflectionCenter  = Utils.ReadVector3(reader);
         this.rightEyeReflectionCenter = Utils.ReadVector3(reader);
     }
 }
Exemple #22
0
        public override void Write(NiHeader header, BinaryWriter writer)
        {
            List <int> blockReferences = header.GetBlockReferences();

            if (blockReferences.Count > 0)
            {
                if (this.skinInstance != -1)
                {
                    this.skinInstance = blockReferences[this.skinInstance];
                }
                if (this.bsProperties[0] != -1)
                {
                    this.bsProperties[0] = blockReferences[this.bsProperties[0]];
                }
                if (this.bsProperties[1] != -1)
                {
                    this.bsProperties[1] = blockReferences[this.bsProperties[1]];
                }
            }
            base.Write(header, writer);

            /*if (header.GetUserVersion2() == 100 || header.GetUserVersion2() == 130)
             * {
             *  Utils.WriteVector3(writer, this.center);
             *  writer.Write(this.radius);
             *  writer.Write(this.skinInstance);
             *  writer.Write(this.bsProperties[0]);
             *  writer.Write(this.bsProperties[1]);
             * }
             * else*/
            {
                writer.Write(this.data);
                writer.Write(this.skinInstance);
                if (header.GetVersion() > 335544325U)
                {
                    writer.Write(this.numMaterials);
                    for (int index = 0; (long)index < (long)this.numMaterials; ++index)
                    {
                        writer.Write(this.materialNames[index]);
                    }
                    for (int index = 0; (long)index < (long)this.numMaterials; ++index)
                    {
                        writer.Write(this.materialExtraData[index]);
                    }
                    writer.Write(this.activeMaterial);
                    Utils.WriteBool(writer, this.dirtyFlag);
                    if (header.GetUserVersion() == 12)
                    {
                        writer.Write(this.bsProperties[0]);
                        writer.Write(this.bsProperties[1]);
                    }
                }
                else
                {
                    Utils.WriteBool(writer, this.hasShader);
                    if (!this.hasShader)
                    {
                        return;
                    }
                    Utils.WriteSizedString(writer, this.shaderName);
                    writer.Write(this.unknownInt);
                }
            }
        }
Exemple #23
0
        public override void Write(NiHeader header, BinaryWriter writer)
        {
            List <int> blockReferences = header.GetBlockReferences();

            if (blockReferences.Count > 0)
            {
                if (this.textureSet != -1)
                {
                    this.textureSet = blockReferences[this.textureSet];
                }
            }
            writer.Write(this.shaderType);
            base.Write(header, writer);
            writer.Write(this.shaderFlags1);
            writer.Write(this.shaderFlags2);
            Utils.WriteUVCoord(writer, this.uvOffset);
            Utils.WriteUVCoord(writer, this.uvScale);
            writer.Write(this.textureSet);
            Utils.WriteColor3(writer, this.emissiveColor);
            writer.Write(this.emissiveMultiple);
            if (header.GetVersion() == 335675399U && header.GetUserVersion2() == 130)
            {
                writer.Write(this.wetMaterialIdx);
            }
            writer.Write(this.textureClampMode);
            writer.Write(this.alpha);
            writer.Write(this.refractionStrength);
            writer.Write(this.glossiness);
            Utils.WriteColor3(writer, this.specularColor);
            writer.Write(this.specularStrength);
            if (header.GetVersion() == 335675399U && header.GetUserVersion2() == 130)
            {
                writer.Write(this.subsurfaceRolloff);
                writer.Write(this.unkownFloat1);
                writer.Write(this.backlightPower);
                writer.Write(this.grayscaleToPaletteScale);
                writer.Write(this.fresnelPower);
                writer.Write(this.wetnessSpecScale);
                writer.Write(this.wetnessSpecPower);
                writer.Write(this.wetnessMinVar);
                writer.Write(this.wetnessEnvMapScale);
                writer.Write(this.wetnessFresnelPower);
                writer.Write(this.wetnessMetalness);
            }
            else
            {
                writer.Write(this.lightingEffect1);
                writer.Write(this.lightingEffect2);
            }
            if ((int)this.shaderType == 1)
            {
                writer.Write(this.environmentMapScale);
            }
            else if ((int)this.shaderType == 5)
            {
                Utils.WriteColor3(writer, this.skinTintColor);
            }
            else if ((int)this.shaderType == 6)
            {
                Utils.WriteColor3(writer, this.hairTintColor);
            }
            else if ((int)this.shaderType == 7)
            {
                writer.Write(this.maxPasses);
                writer.Write(this.scale);
            }
            else if ((int)this.shaderType == 11)
            {
                writer.Write(this.parallaxInnerLayerThickness);
                writer.Write(this.parallaxRefractionScale);
                Utils.WriteUVCoord(writer, this.parallaxInnerLayerTextureScale);
                writer.Write(this.parallaxEnvmapStrength);
            }
            else if ((int)this.shaderType == 14)
            {
                Utils.WriteVector4(writer, this.sparkleParameters);
            }
            else
            {
                if ((int)this.shaderType != 16)
                {
                    return;
                }
                writer.Write(this.eyeCubemapScale);
                Utils.WriteVector3(writer, this.leftEyeReflectionCenter);
                Utils.WriteVector3(writer, this.rightEyeReflectionCenter);
            }
        }