public void TryGetEntry(uint hash, out SBEntry entry) { entry = null; foreach(SBEntry sb in bones) if (sb.hash == hash) entry = sb; }
public override void Read(string filename) { FileData d = new FileData(filename); FilePath = filename; d.Endian = Endianness.Little; // characters are little d.seek(8); // skip magic and version? int count = d.readInt(); // entry count for (int i = 0; i < count; i++) { SBEntry sb = new SBEntry() { hash = (uint)d.readInt(), param1_1 = d.readFloat(), param1_2 = d.readInt(), param1_3 = d.readInt(), param2_1 = d.readFloat(), param2_2 = d.readFloat(), param2_3 = d.readInt(), rx1 = d.readFloat(), rx2 = d.readFloat(), ry1 = d.readFloat(), ry2 = d.readFloat(), rz1 = d.readFloat(), rz2 = d.readFloat() }; for (int j = 0; j < 8; j++) { sb.boneHashes[j] = (uint)d.readInt(); } for (int j = 0; j < 4; j++) { sb.unks1[j] = d.readFloat(); } for (int j = 0; j < 6; j++) { sb.unks2[j] = d.readFloat(); } sb.factor = d.readFloat(); for (int j = 0; j < 3; j++) { sb.ints[j] = d.readInt(); } bones.Add(sb); /*Console.WriteLine(sb.hash.ToString("x")); * Console.WriteLine(d.readFloat() + " " + d.readInt() + " " + d.readInt()); * Console.WriteLine(d.readFloat() + " " + d.readInt() + " " + d.readInt()); * * //28 floats? * Console.WriteLine(d.readFloat() + " " + d.readFloat()); * Console.WriteLine(d.readFloat() + " " + d.readFloat()); * Console.WriteLine(d.readFloat() + " " + d.readFloat()); * Console.WriteLine(d.readFloat() + " " + d.readFloat() + " " + d.readFloat() + " " + d.readFloat()); * Console.WriteLine(d.readFloat() + " " + d.readFloat() + " " + d.readFloat() + " " + d.readFloat()); * * Console.WriteLine(d.readFloat() + " " + d.readFloat() + " " + d.readFloat() + " " + d.readFloat()); * Console.WriteLine(d.readFloat() + " " + d.readFloat() + " " + d.readFloat() + " " + d.readFloat()); * * Console.WriteLine(d.readFloat() + " " + d.readFloat()); * Console.WriteLine(d.readInt() + " " + d.readInt()); * Console.WriteLine(d.readInt() + " " + d.readInt()); * Console.WriteLine();*/ } }