public void ResidentionalCodesIdentifier_BaseResidentionaCode_BTICodesContainsResidentionalCodes() { IBTI bti = new BTI("2.1, 2.2", false, false, false); var processing = Handler("2.0", bti, ""); var excepted = exceptedCodes("2.1, 2.2"); processing.FullProcessing(); Assert.AreEqual(excepted, processing.Codes.Show); }
public void ResidentionalCodesIdentifier_BTI_HiLvlIsTrue_ReturnsCorrectResult(string Codes, string _excepted) { IBTI bti = new BTI("2.5, 2.6, 2.7.1", false, false, true); var processing = Handler(Codes, bti, ""); var excepted = exceptedCodes(_excepted); processing.FullProcessing(); Assert.AreEqual(excepted, processing.Codes.Show); }
public void _Maintenance_InputStringIsNotMaintenance_ReturnsFalse(string input, string btiCodes) { ICodes codes = new Codes(mf); IBTI buiding = new BTI(btiCodes, false, false, true); ICodeSeeker searchResult = new CodeSeeker(input, codes, mf); ICodeHandler processing = new CodeHandler(searchResult.Codes, buiding, input, 0, mf); var result = processing.Maintenance; Assert.AreEqual(false, result); }
public void FixCode_Other_NotASingleOtherCode_RetunsCodesWithoutOther() { IBTI buildings = new BTI("2.6.0", false, false, true); ICodes Codes = new Codes(mf); Codes.AddNodes("4.9.0, 12.3.0"); ICodeHandler processing = new CodeHandler(Codes, buildings, "", 0, mf); var result = exceptedCodes("4.9.0"); processing.FullProcessing(); Assert.AreEqual(result, Codes.Show); }
public void Landscaping_NotSingleLandscapeCode_returnsFalse() { IBTI bti = new BTI(); string input = "Благоустройство территории и гараж"; ICodeSeeker searchCodes = new CodeSeeker(input, new Codes(mf), mf); searchCodes.Seek(); CodeHandler processing = new CodeHandler(searchCodes.Codes, bti, input, 0, mf); processing.FullProcessing(); var result = processing.Landscaping; Assert.AreEqual(false, result); }
/// <summary> /// Generate a BinTexture from a BTI. /// </summary> /// <param name="bti">BTI to load as a BinTexture.</param> public UnusedTexture(BTI bti) { // Set texture width. Width = bti.Width; // Set texture height. Height = bti.Height; // Set texture format. Format = bti.Format; // Set texture alpha flag (Unsure, but seems logical) AlphaFlag = bti.AlphaFlag; // Set texture unknown 1. (Padding?) Unknown1 = 0; // Set texture data offset. DataOffset = bti.DataOffset; }
private void TexturesList_DoubleClick(object sender, EventArgs e) { if (texturesList.Items.Count == 0) { return; } string ext = Path.GetExtension(texturesList.GetItemText(texturesList.SelectedItem)); string[] exts = { ".bti", ".tpl", ".bclim" }; bool isSupported = false; for (int i = 0; i < exts.Length; i++) { if (exts[i] == ext) { isSupported = true; break; } } if (!isSupported) { MessageBox.Show("This image format does not support viewing yet."); return; } string fullPath = mMainRoot + "timg/" + texturesList.GetItemText(texturesList.SelectedItem); byte[] data = null; if (mLayoutImages.ContainsKey(fullPath)) { data = mLayoutImages[fullPath]; } // this is because TEX1 has paths as upper but the filenames are lowercase if (data == null) { if (mLayoutImages.ContainsKey(fullPath.ToLower())) { data = mLayoutImages[fullPath.ToLower()]; } } if (data == null) { return; } EndianBinaryReader reader = new EndianBinaryReader(data); ImageContainerBase container = null; // no need for a default case since it will return if the format isnt supported switch (ext) { case ".tpl": container = new TPL(ref reader); break; case ".bti": container = new BTI(ref reader); break; case ".bclim": container = new BCLIM(ref reader); break; } if (container == null) { return; } ImageViewer viewer = new ImageViewer(texturesList.GetItemText(texturesList.SelectedItem)); viewer.setImage(container.getImage(0)); viewer.Show(); }
public MDL(byte[] data) { // Define a binary reader to read with. DhBinaryReader br = new DhBinaryReader(data, DhEndian.Big); Header = new MDLHeader(br); br.Goto(Header.MatricesOffset); Matrices = new Mat4[Header.JointCount + Header.WeightCount]; for (int i = 0; i < Matrices.Length; i++) { Matrices[i] = Mat4.Identity; } for (int i = 0; i < Header.JointCount; i++) { float[] matrix = br.ReadF32s(12); Matrices[i] = new Mat4() { Row1 = new Vec4(matrix[0], matrix[1], matrix[2], matrix[3]), Row2 = new Vec4(matrix[4], matrix[5], matrix[6], matrix[7]), Row3 = new Vec4(matrix[8], matrix[9], matrix[10], matrix[11]), Row4 = new Vec4(0, 0, 0, 1), }; } br.Goto(Header.PositionOffset); Positions = br.ReadVec3s(Header.PositionCount).ToList(); br.Goto(Header.NormalOffset); Normals = br.ReadVec3s(Header.NormalCount).ToList(); br.Goto(Header.ColorOffset); Colors = br.ReadClr4s(Header.ColorCount).ToList(); br.Goto(Header.TextureCoordinateOffset); TextureCoordinates = br.ReadVec2s(Header.TextureCoordinateCount).ToList(); br.Goto(Header.PacketOffset); Packets = new List <MDLShapePacket>(); for (int i = 0; i < Header.PacketCount; i++) { Packets.Add(new MDLShapePacket(br)); } br.Goto(Header.ShapeOffset); Shapes = new List <MDLShape>(); for (int i = 0; i < Header.ShapeCount; i++) { Shapes.Add(new MDLShape(br, Packets)); } foreach (MDLShape shape in Shapes) { ushort[] matrixIndices = new ushort[10]; foreach (MDLShapePacket packet in shape.Packets) { for (int m = 0; m < packet.MatrixCount; m++) { if (packet.MatrixIndices[m] == ushort.MaxValue) { continue; } matrixIndices[m] = packet.MatrixIndices[m]; } DhBinaryReader reader = new DhBinaryReader(packet.Data, DhEndian.Big); while (reader.Position() < packet.DataSize) { ShapePacketData packetData = new ShapePacketData(); packetData.PrimitiveType = reader.ReadU8(); if (packetData.PrimitiveType == 0x00) { continue; } packetData.VertexCount = reader.ReadU16(); for (int i = 0; i < packetData.VertexCount; i++) { MDLVertex vertex = new MDLVertex(reader, Header, shape.UseNbt); if (vertex.MatrixIndex != -1) { vertex.MatrixDataIndex = matrixIndices[(vertex.MatrixIndex / 3)]; } packetData.Vertices.Add(vertex); } packet.PacketData.Add(packetData); } } } br.Goto(Header.TextureLocationOffset); Textures = new List <BTI>(); for (int i = 0; i < Header.TextureCount; i++) { uint offset = br.ReadU32(); long currentPosition = br.Position(); br.Goto(offset); BTI bti = new BTI(br, offset, Header.TextureLocationOffset); Textures.Add(bti); br.Goto(currentPosition); } br.Goto(Header.SamplerOffset); Samplers = new List <MDLSampler>(); for (int i = 0; i < Header.SamplerCount; i++) { Samplers.Add(new MDLSampler(br)); } br.Goto(Header.MaterialOffset); Materials = new List <MDLMaterial>(); for (int i = 0; i < Header.MaterialCount; i++) { Materials.Add(new MDLMaterial(br, Samplers)); } br.Goto(Header.DrawElementOffset); DrawElements = new List <MDLDrawElement>(); for (int i = 0; i < Header.DrawElementCount; i++) { DrawElements.Add(new MDLDrawElement(br, Materials, Shapes)); } br.Goto(Header.NodeOffset); Nodes = new List <MDLNode>(); for (int i = 0; i < Header.NodeCount; i++) { Nodes.Add(new MDLNode(br, DrawElements)); } }
public BTIViewer(BTI Image) { this.Image = Image; InitializeComponent(); }