예제 #1
0
        public NiShaderTexDesc(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            HasMap = new NiBoolean(reader);

            if (!HasMap)
            {
                return;
            }
            Map   = new NiTexDesc(reader, niFile);
            MapId = reader.ReadUInt32();
        }
예제 #2
0
        public NiTexturingProperty(BinaryReader reader, NiFile file) : base(reader, file)
        {
            Flags = reader.ReadInt16();

            TextureCount = reader.ReadUInt32();

            HasBaseTexture = new NiBoolean(reader);

            if (HasBaseTexture)
            {
                BaseTexture = new NiTexDesc(reader, file);
            }

            HasDarkTexture = new NiBoolean(reader);

            if (HasDarkTexture)
            {
                DarkTexture = new NiTexDesc(reader, file);
            }

            HasDetailTexture = new NiBoolean(reader);

            if (HasDetailTexture)
            {
                DetailTexture = new NiTexDesc(reader, file);
            }

            HasGlossTexture = new NiBoolean(reader);

            if (HasGlossTexture)
            {
                GlossTexture = new NiTexDesc(reader, file);
            }

            HasGlowTexture = new NiBoolean(reader);

            if (HasGlowTexture)
            {
                GlowTexture = new NiTexDesc(reader, file);
            }

            if (TextureCount > 5)
            {
                HasBumpMapTexture = new NiBoolean(reader);
                if (!HasBumpMapTexture)
                {
                    goto Normal;
                }

                BumpMapTexture    = new NiTexDesc(reader, file);
                BumpMapLumaScale  = reader.ReadSingle();
                BumpMapLumaOffset = reader.ReadSingle();
                BumpMapMatrix     = new NiMatrix2X2(reader, file);
            }

Normal:
            if (TextureCount > 6)
            {
                HasNormalTexture = new NiBoolean(reader);
                if (!HasNormalTexture)
                {
                    goto Parallax;
                }

                NormalTexture = new NiTexDesc(reader, file);
            }

Parallax:
            if (TextureCount > 7)
            {
                HasParallaxTexture = new NiBoolean(reader);
                if (!HasParallaxTexture)
                {
                    goto Shader;
                }

                ParallaxTexture = new NiTexDesc(reader, file);
                ParallaxOffset  = reader.ReadSingle();
            }

Shader:
            ShaderTexturesCount = reader.ReadUInt32();

            for (var i = 0; i < ShaderTexturesCount; i++)
            {
                ShaderTextures[i] = new NiShaderTexDesc(reader, file);
            }
        }