Ejemplo n.º 1
0
        public NiPixelData(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            Pallet = new NiRef <NiPalette>(niFile, reader.ReadInt32());

            MipMapCount = reader.ReadUInt32();

            BytesPerPixel = reader.ReadUInt32();

            MipMaps = new NiMipMap[MipMapCount];

            for (var i = 0; i < MipMapCount; i++)
            {
                MipMaps[i] = new NiMipMap(reader, niFile);
            }

            PixelCount = reader.ReadUInt32();

            FacesCount = reader.ReadUInt32();

            PixelData = new byte[PixelCount];

            for (var i = 0; i < PixelCount; i++)
            {
                PixelData[i] = reader.ReadByte();
            }
        }
        public NiPersistentSrcTextureRendererData(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            Palette = new NiRef <NiPalette>(niFile, reader.ReadInt32());

            MipMapCount = reader.ReadUInt32();

            BytesPerPixel = reader.ReadUInt32();

            MipMaps = new NiMipMap[MipMapCount];

            for (var i = 0; i < MipMapCount; i++)
            {
                MipMaps[i] = new NiMipMap(reader, niFile);
            }

            PixelCount = reader.ReadUInt32();

            PadPixelCount = reader.ReadUInt32();

            FacesCount = reader.ReadUInt32();

            Platform = (PlatformId)reader.ReadUInt32();

            PixelData = new byte[PixelCount];

            for (var i = 0; i < PixelCount; i++)
            {
                PixelData[i] = reader.ReadByte();
            }
        }
Ejemplo n.º 3
0
        public NiSourceTexture(BinaryReader reader, NiFile file) : base(reader, file)
        {
            UseExternal = reader.ReadByte();

            switch (UseExternal)
            {
            case 1:
                FilePath    = file.Header.Strings[reader.ReadUInt32()];
                UnknownLink = new NiRef <NiObject>(file, reader.ReadInt32());
                break;

            case 0:
                OriginalFilePath = file.Header.Strings[reader.ReadUInt32()];
                PixelData        = new NiRef <NiPixelFormat>(file, reader.ReadInt32());
                break;

            default:
                throw new ArgumentOutOfRangeException($"{UseExternal} is not a vaild source texture option.");
            }

            FormatPrefs = new NiFormatPrefs(reader, file);

            IsStatic = reader.ReadByte();

            PersistRenderData = new NiBoolean(reader);
        }
        public NiPersistentSrcTextureRendererData(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            PixelCount = reader.ReadUInt32();

            Palette = new NiRef <NiPalette>(niFile, reader.ReadInt32());

            FacesCount = reader.ReadUInt32();

            //MipMapCount = reader.ReadUInt32();

            BytesPerPixel = reader.ReadUInt32();

            //MipMaps = new NiMipMap[MipMapCount];

            /*
             * for (var i = 0; i < MipMapCount; i++)
             * {
             *  MipMaps[i] = new NiMipMap(reader, niFile);
             * }
             */

            //Platform = (PlatformId) reader.ReadUInt32();

            PixelData = new byte[FacesCount, PixelCount];

            for (var i = 0; i < FacesCount; i++)
            {
                for (var j = 0; j < PixelCount; j++)
                {
                    PixelData[i, j] = reader.ReadByte();
                }
            }
        }
Ejemplo n.º 5
0
        public NiCamera(BinaryReader reader, NiFile file) : base(reader, file)
        {
            CameraFlags = reader.ReadUInt16();

            FrustumLeft = reader.ReadSingle();

            FrustumRight = reader.ReadSingle();

            FrustumTop = reader.ReadSingle();

            FrustumBottom = reader.ReadSingle();

            FrustumNear = reader.ReadSingle();

            FrustumFar = reader.ReadSingle();

            UseOrthographicProjection = new NiBoolean(reader);

            ViewportLeft = reader.ReadSingle();

            ViewportRight = reader.ReadSingle();

            ViewportTop = reader.ReadSingle();

            ViewportBottom = reader.ReadSingle();

            LODAdjust = reader.ReadSingle();

            Scene = new NiRef <NiAVObject>(file, reader.ReadInt32());

            ScreenPolygonsCount = reader.ReadUInt32();

            ScreenTexturesCount = reader.ReadUInt32();
        }
Ejemplo n.º 6
0
        public NiGeometry(BinaryReader reader, NiFile file) : base(reader, file)
        {
            Data = new NiRef <NiGeometryData>(file, reader.ReadInt32());

            SkinInstance = new NiRef <NiSkinInstance>(file, reader.ReadInt32());

            MaterialData = new NiMaterialData(reader, file);
        }
Ejemplo n.º 7
0
        public NiSkinInstance(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            SkinningData = new NiRef <NiSkinData>(niFile, reader.ReadInt32());

            SkinPartition = new NiRef <NiSkinPartition>(niFile, reader.ReadInt32());

            Root = new NiRef <NiNode>(niFile, reader.ReadInt32());

            BonesCount = reader.ReadUInt32();

            Bones = new NiPtr <NiNode> [BonesCount];
            for (var i = 0; i < BonesCount; i++)
            {
                Bones[i] = new NiPtr <NiNode>(niFile, reader.ReadInt32());
            }
        }
Ejemplo n.º 8
0
        public NiTimeController(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            Next = new NiRef <NiTimeController>(niFile, reader.ReadInt32());

            Flags = reader.ReadInt16();

            Frequency = reader.ReadSingle();

            Phase = reader.ReadSingle();

            StartTime = reader.ReadSingle();

            StopTime = reader.ReadSingle();

            Target = new NiPtr <NiObjectNet>(niFile, reader.ReadInt32());
        }
Ejemplo n.º 9
0
        public NiImage(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            UseExternal = reader.ReadByte();

            switch (UseExternal)
            {
            case 0:
                FileName = niFile.Header.Strings[reader.ReadUInt32()];
                break;

            case 1:
                RawImage = new NiRef <NiRawImageData>(niFile, reader.ReadInt32());
                break;

            default:
                throw new ArgumentOutOfRangeException($"{UseExternal} is not a vaild image setting.");
            }

            Unknown = reader.ReadUInt32();

            UnknownTwo = reader.ReadSingle();
        }
Ejemplo n.º 10
0
        public NiTexDesc(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            Source = new NiRef <NiSourceTexture>(niFile, reader.ReadInt32());

            Flags = reader.ReadInt16();

            HasTextureTransform = new NiBoolean(reader);

            if (!HasTextureTransform)
            {
                return;
            }

            Translation = new NiTexCoord(reader, niFile);

            Scale = new NiTexCoord(reader, niFile);

            Rotation = reader.ReadSingle();

            Method = (TransformMethod)reader.ReadUInt32();

            Center = new NiTexCoord(reader, niFile);
        }
Ejemplo n.º 11
0
        public NiPoint3Interpolator(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            Value = new NiVector3(reader, niFile);

            Data = new NiRef <NiPosData>(niFile, reader.ReadInt32());
        }
Ejemplo n.º 12
0
        public NiBoolInterpolator(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            Value = new NiBoolean(reader);

            Data = new NiRef <NiBoolData>(niFile, reader.ReadInt32());
        }
Ejemplo n.º 13
0
        public NiGeometryData(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            if ((int)niFile.Header.NifVersion >= 0x0A020000)
            {
                GroupId = reader.ReadInt32();
            }

            VerticesCount = reader.ReadUInt16();

            if ((int)niFile.Header.NifVersion >= 0x0A010000)
            {
                KeepFlags     = reader.ReadByte();
                CompressFlags = reader.ReadByte();
            }

            HasVertices = new NiBoolean(reader);
            if (HasVertices)
            {
                Vertices = new NiVector3[VerticesCount];
                for (uint i = 0; i < VerticesCount; i++)
                {
                    Vertices[i] = new NiVector3(reader, niFile);
                }
            }

            if ((int)niFile.Header.NifVersion >= 0x0A000100 &&
                !((int)niFile.Header.NifVersion >= 0x14020007 && niFile.Header.UserVersion >= 11))
            {
                NumUvSets = reader.ReadUInt16();
            }

            HasNormals = new NiBoolean(reader);
            if (HasNormals)
            {
                Normals = new NiVector3[VerticesCount];
                for (uint i = 0; i < VerticesCount; i++)
                {
                    Normals[i] = new NiVector3(reader, niFile);
                }
            }

            if ((int)niFile.Header.NifVersion >= 0x0A010000)
            {
                if (HasNormals && (NumUvSets & 61440) != 0)
                {
                    Tangents = new NiVector3[VerticesCount];
                    for (uint i = 0; i < VerticesCount; i++)
                    {
                        Tangents[i] = new NiVector3(reader, niFile);
                    }

                    BitTangents = new NiVector3[VerticesCount];
                    for (uint i = 0; i < VerticesCount; i++)
                    {
                        BitTangents[i] = new NiVector3(reader, niFile);
                    }
                }
            }

            Center = new NiVector3(reader, niFile);
            Radius = reader.ReadSingle();

            HasVertexColors = new NiBoolean(reader);
            if (HasVertexColors)
            {
                VertexColors = new NiColor4[VerticesCount];
                for (uint i = 0; i < VerticesCount; i++)
                {
                    VertexColors[i] = new NiColor4(reader, niFile);
                }
            }

            if ((int)niFile.Header.NifVersion <= 0x04020200)
            {
                NumUvSets = reader.ReadUInt16();
            }

            if ((int)niFile.Header.NifVersion <= 0x04000002)
            {
                HasUv = new NiBoolean(reader);
            }

            Uv = new NiTexCoord[(NumUvSets & 63) | (0 & 1)][];
            for (uint i = 0; i < Uv.Length; i++)
            {
                Uv[i] = new NiTexCoord[VerticesCount];
                for (uint j = 0; j < VerticesCount; j++)
                {
                    Uv[i][j] = new NiTexCoord(reader, niFile);
                }
            }

            if ((int)niFile.Header.NifVersion >= 0x0A000100 && niFile.Header.UserVersion < 12)
            {
                Consistency = (ConsistencyType)reader.ReadUInt16();
            }

            if ((int)niFile.Header.NifVersion >= 0x14000004 && niFile.Header.UserVersion < 12)
            {
                var blockNum = reader.ReadUInt32();
                AdditionData = new NiRef <AbstractAdditionalGeometryData>(niFile, (int)blockNum);
            }
        }
Ejemplo n.º 14
0
 public NiSingleInterpController(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
     Interpolator = new NiRef <NiInterpolator>(niFile, reader.ReadInt32());
 }
Ejemplo n.º 15
0
        public NiFloatInterpolator(BinaryReader reader, NiFile niFile) : base(reader, niFile)
        {
            Value = reader.ReadSingle();

            Data = new NiRef <NiFloatData>(niFile, reader.ReadInt32());
        }
Ejemplo n.º 16
0
 public NiLODNode(BinaryReader reader, NiFile file) : base(reader, file)
 {
     Data = new NiRef <NiLODData>(file, reader.ReadInt32());
 }
Ejemplo n.º 17
0
        public NiTextureProperty(BinaryReader reader, NiFile file) : base(reader, file)
        {
            Flags = reader.ReadInt16();

            Image = new NiRef <NiImage>(file, reader.ReadInt32());
        }
Ejemplo n.º 18
0
 public NiTransformInterpolator(BinaryReader reader, NiFile niFile) : base(reader, niFile)
 {
     Transform = new NiQuatTransform(reader, niFile);
     Data      = new NiRef <NiTransformData>(niFile, reader.ReadInt32());
 }