Beispiel #1
0
        public DrawElement(FileReader reader, BIN_Parser header)
        {
            MaterialIndex   = reader.ReadInt16();
            ShapeBatchIndex = reader.ReadInt16();

            Material = header.ReadSection <Material>(reader, MaterialIndex);
            Batch    = header.ReadSection <ShapeBatch>(reader, ShapeBatchIndex);
        }
        public SceneGraphNode(FileReader reader, int index, BIN_Parser header)
        {
            Index            = index;
            ParentIndex      = reader.ReadInt16();
            FirstChildIndex  = reader.ReadInt16();
            NextSiblingIndex = reader.ReadInt16();
            PrevSiblingIndex = reader.ReadInt16();
            reader.ReadByte();
            RenderFlags = (GraphObjectRenderFlags)reader.ReadByte();
            reader.ReadInt16();
            Scale       = reader.ReadVec3();
            Rotate      = reader.ReadVec3();
            Translate   = reader.ReadVec3();
            BoundingMin = reader.ReadVec3();
            BoundingMax = reader.ReadVec3();
            Unknown     = reader.ReadSingle();
            ushort drawElementCount = reader.ReadUInt16();

            reader.ReadUInt16(); //padding
            uint drawElementOffset = reader.ReadUInt32();

            if (drawElementCount > 0)
            {
                for (int i = 0; i < drawElementCount; i++)
                {
                    reader.SeekBegin(header.SceneGraphOffset + drawElementOffset + (i * 4));
                    DrawnParts.Add(new DrawElement(reader, header));
                }
            }

            if (FirstChildIndex >= 0)
            {
                AddChild(header.ReadSection <SceneGraphNode>(reader, FirstChildIndex));
            }
            if (NextSiblingIndex >= 0)
            {
                if (Parent != null)
                {
                    Parent.AddChild(header.ReadSection <SceneGraphNode>(reader, NextSiblingIndex));
                }
                else
                {
                    AddChild(header.ReadSection <SceneGraphNode>(reader, NextSiblingIndex));
                }
            }
        }
Beispiel #3
0
 public Sampler(FileReader reader, BIN_Parser header)
 {
     TextureIndex = reader.ReadInt16();
     PaletteIndex = reader.ReadInt16();
     WrapS        = reader.ReadByte();
     WrapT        = reader.ReadByte();
     Unknown      = reader.ReadUInt16();
     Texture      = header.ReadSection <Texture>(reader, TextureIndex);
 }
Beispiel #4
0
        public Material(FileReader reader, BIN_Parser header)
        {
            DynamicLighting = reader.ReadByte();
            Unknown2        = reader.ReadByte();
            Unknown3        = reader.ReadByte();
            AmbientColor    = reader.ReadColor8RGBA();
            reader.ReadByte(); //padding
            SamplerIndices = reader.ReadInt16s(8);
            Unknown4       = reader.ReadInt16();
            Unknown5       = reader.ReadInt16();
            Padding        = reader.ReadBytes(12);

            for (int i = 0; i < 8; i++)
            {
                if (SamplerIndices[i] != -1)
                {
                    Samplers.Add(header.ReadSection <Sampler>(reader, SamplerIndices[i]));
                }
            }
        }