// 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(); } } }
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(); } } }
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)); }
public bool HasAttribute(BatchAttributes attribute) { return(Attributes.HasFlag(attribute)); }