Пример #1
0
        // stupid f*****g C#
        public Vertex(ABinaryReader binaryReader, bool useNBT, int uvCount, BatchAttributes attributes)
            : this()
        {
            MatrixIndex = null;
            PositionIndex = null;
            NormalIndex = null;
            BinormalIndex = null;
            TangentIndex = null;
            ColorIndex = new short?[2];
            UVIndex = new short?[8];

            if (attributes.HasFlag(BatchAttributes.Position))
            {
                PositionIndex = binaryReader.ReadS16();
            }

            if (attributes.HasFlag(BatchAttributes.Normal))
            {
                NormalIndex = binaryReader.ReadS16();

                if (useNBT)
                {
                    BinormalIndex = binaryReader.ReadS16();
                    TangentIndex = binaryReader.ReadS16();
                }
            }

            if (attributes.HasFlag(BatchAttributes.Color0))
            {
                ColorIndex[0] = binaryReader.ReadS16();
            }

            if (attributes.HasFlag(BatchAttributes.Color1))
            {
                ColorIndex[1] = binaryReader.ReadS16();
            }

            for (int texCoord = 0; texCoord < uvCount; texCoord++)
            {
                if (attributes.HasFlag((BatchAttributes)(1 << (13 + texCoord))))
                {
                    UVIndex[texCoord] = binaryReader.ReadS16();
                }
            }
        }
Пример #2
0
        public Vertex(ABinaryReader binaryReader, bool useNBT, int uvCount, BatchAttributes attributes)
            : this()             // stupid f*****g C#
        {
            MatrixIndex   = null;
            PositionIndex = null;
            NormalIndex   = null;
            BinormalIndex = null;
            TangentIndex  = null;
            ColorIndex    = new short?[2];
            UVIndex       = new short?[8];

            if (attributes.HasFlag(BatchAttributes.Position))
            {
                PositionIndex = binaryReader.ReadS16();
            }

            if (attributes.HasFlag(BatchAttributes.Normal))
            {
                NormalIndex = binaryReader.ReadS16();

                if (useNBT)
                {
                    BinormalIndex = binaryReader.ReadS16();
                    TangentIndex  = binaryReader.ReadS16();
                }
            }

            if (attributes.HasFlag(BatchAttributes.Color0))
            {
                ColorIndex[0] = binaryReader.ReadS16();
            }

            if (attributes.HasFlag(BatchAttributes.Color1))
            {
                ColorIndex[1] = binaryReader.ReadS16();
            }

            for (int texCoord = 0; texCoord < uvCount; texCoord++)
            {
                if (attributes.HasFlag((BatchAttributes)(1 << (13 + texCoord))))
                {
                    UVIndex[texCoord] = binaryReader.ReadS16();
                }
            }
        }
Пример #3
0
 public Primitive(ABinaryReader binaryReader, bool useNBT, int uvCount, BatchAttributes attributes)
 {
     Type     = (PrimitiveType)binaryReader.Read8();
     vertices = CollectionUtility.Initialize <Vertex>(binaryReader.Read16(), () => new Vertex(binaryReader, useNBT, uvCount, attributes));
 }
Пример #4
0
 public bool HasAttribute(BatchAttributes attribute)
 {
     return(Attributes.HasFlag(attribute));
 }