// Token: 0x0600025A RID: 602 RVA: 0x00014E14 File Offset: 0x00013014 public bool TransferModel(BinaryReader reader, string header, BinaryWriter writer, SlotMaterials slotMat) { writer.Write(header); int num = reader.ReadInt32(); writer.Write(num); writer.Write(reader.ReadString()); writer.Write(reader.ReadString()); int num2 = reader.ReadInt32(); writer.Write(num2); for (int i = 0; i < num2; i++) { writer.Write(reader.ReadString()); writer.Write(reader.ReadByte()); } for (int j = 0; j < num2; j++) { int value = reader.ReadInt32(); writer.Write(value); } for (int k = 0; k < num2; k++) { this.TransferVec(reader, writer, 7); if (num >= 2001) { bool flag = reader.ReadBoolean(); writer.Write(flag); if (flag) { this.TransferVec(reader, writer, 3); } } } int num3 = reader.ReadInt32(); int num4 = reader.ReadInt32(); int num5 = reader.ReadInt32(); writer.Write(num3); writer.Write(num4); writer.Write(num5); for (int l = 0; l < num5; l++) { writer.Write(reader.ReadString()); } for (int m = 0; m < num5; m++) { this.TransferVec(reader, writer, 16); } for (int n = 0; n < num3; n++) { this.TransferVec(reader, writer, 8); } int num6 = reader.ReadInt32(); writer.Write(num6); for (int num7 = 0; num7 < num6; num7++) { this.TransferVec4(reader, writer); } for (int num8 = 0; num8 < num3; num8++) { for (int num9 = 0; num9 < 4; num9++) { writer.Write(reader.ReadUInt16()); } this.TransferVec4(reader, writer); } for (int num10 = 0; num10 < num4; num10++) { int num11 = reader.ReadInt32(); writer.Write(num11); for (int num12 = 0; num12 < num11; num12++) { writer.Write(reader.ReadInt16()); } } int num13 = reader.ReadInt32(); writer.Write(num13); for (int num14 = 0; num14 < num13; num14++) { TargetMaterial targetMaterial = slotMat.Get(num14); this.TransferMaterial(reader, writer, targetMaterial, targetMaterial.onlyModel); } while (reader.PeekChar() != -1) { string text = reader.ReadString(); writer.Write(text); if (text == "end") { break; } if (!(text != "morph")) { string value2 = reader.ReadString(); writer.Write(value2); int num15 = reader.ReadInt32(); writer.Write(num15); for (int num16 = 0; num16 < num15; num16++) { writer.Write(reader.ReadUInt16()); this.TransferVec(reader, writer, 6); } } } return(true); }
public bool TransferModel(BinaryReader reader, string header, BinaryWriter writer, SlotMaterials slotMat) { writer.Write(header); writer.Write(reader.ReadInt32()); // ver writer.Write(reader.ReadString()); // "_SM_" + name writer.Write(reader.ReadString()); // base_bone int count = reader.ReadInt32(); writer.Write(count); // num (bone_count) for (int i = 0; i < count; i++) { writer.Write(reader.ReadString()); // ボーン名 writer.Write(reader.ReadByte()); // フラグ (_SCL_追加の有無等) } for (int i = 0; i < count; i++) { int count2 = reader.ReadInt32(); // parent index writer.Write(count2); } for (int i = 0; i < count; i++) { // (x, y, z), (x2, y2, z2, w) TransferVec(reader, writer, 7); } int vertexCount = reader.ReadInt32(); int facesCount = reader.ReadInt32(); int localBoneCount = reader.ReadInt32(); writer.Write(vertexCount); writer.Write(facesCount); writer.Write(localBoneCount); for (int i = 0; i < localBoneCount; i++) { writer.Write(reader.ReadString()); // ローカルボーン名 } for (int i = 0; i < localBoneCount; i++) { TransferVec(reader, writer, 16); // matrix (floatx4, floatx4) } for (int i = 0; i < vertexCount; i++) { TransferVec(reader, writer, 8); } int vertexCount2 = reader.ReadInt32(); writer.Write(vertexCount2); for (int i = 0; i < vertexCount2; i++) { TransferVec4(reader, writer); } for (int i = 0; i < vertexCount; i++) { for (int j = 0; j < 4; j++) { writer.Write(reader.ReadUInt16()); } TransferVec4(reader, writer); } for (int i = 0; i < facesCount; i++) { int cnt = reader.ReadInt32(); writer.Write(cnt); for (int j = 0; j < cnt; j++) { writer.Write(reader.ReadInt16()); } } // material int mateCount = reader.ReadInt32(); writer.Write(mateCount); for (int matNo = 0; matNo < mateCount; matNo++) { var tm = slotMat.Get(matNo); TransferMaterial(reader, writer, tm, tm.onlyModel); } // morph while (reader.PeekChar() != -1) { string name = reader.ReadString(); writer.Write(name); if (name == "end") { break; } if (name == "morph") { string key = reader.ReadString(); writer.Write(key); int num = reader.ReadInt32(); writer.Write(num); for (int i = 0; i < num; i++) { writer.Write(reader.ReadUInt16()); // (x, y, z), (x, y, z) TransferVec(reader, writer, 6); } } } return(true); }
public bool TransferModel(BinaryReader reader, string header, BinaryWriter writer, SlotMaterials slotMat) { writer.Write(header); var ver = reader.ReadInt32(); writer.Write(ver); // ver writer.Write(reader.ReadString()); // "_SM_" + name writer.Write(reader.ReadString()); // base_bone var count = reader.ReadInt32(); writer.Write(count); // num (bone_count) for (var i = 0; i < count; i++) { writer.Write(reader.ReadString()); // ボーン名 writer.Write(reader.ReadByte()); // フラグ (_SCL_追加の有無等) } for (var i = 0; i < count; i++) { var count2 = reader.ReadInt32(); // parent index writer.Write(count2); } for (var i = 0; i < count; i++) { // localPosition, localRotation // (x, y, z), (x2, y2, z2, w) TransferVec(reader, writer, 7); // localScale if (ver < 2001) { continue; } var readScale = reader.ReadBoolean(); writer.Write(readScale); if (readScale) { TransferVec(reader, writer); } } var vertexCount = reader.ReadInt32(); var facesCount = reader.ReadInt32(); var localBoneCount = reader.ReadInt32(); writer.Write(vertexCount); writer.Write(facesCount); writer.Write(localBoneCount); for (var i = 0; i < localBoneCount; i++) { writer.Write(reader.ReadString()); // ローカルボーン名 } for (var i = 0; i < localBoneCount; i++) { TransferVec(reader, writer, 16); // matrix (floatx4, floatx4) } for (var i = 0; i < vertexCount; i++) { TransferVec(reader, writer, 8); } var vertexCount2 = reader.ReadInt32(); writer.Write(vertexCount2); for (var i = 0; i < vertexCount2; i++) { TransferVec4(reader, writer); } for (var i = 0; i < vertexCount; i++) { for (var j = 0; j < 4; j++) { writer.Write(reader.ReadUInt16()); } TransferVec4(reader, writer); } for (var i = 0; i < facesCount; i++) { var cnt = reader.ReadInt32(); writer.Write(cnt); for (var j = 0; j < cnt; j++) { writer.Write(reader.ReadInt16()); } } // material var mateCount = reader.ReadInt32(); writer.Write(mateCount); for (var matNo = 0; matNo < mateCount; matNo++) { var tm = slotMat.Get(matNo); TransferMaterial(reader, writer, tm, tm.onlyModel); } // morph while (reader.PeekChar() != -1) { var name = reader.ReadString(); writer.Write(name); if (name == "end") { break; } if (name != "morph") { continue; } var key = reader.ReadString(); writer.Write(key); var num = reader.ReadInt32(); writer.Write(num); for (var i = 0; i < num; i++) { writer.Write(reader.ReadUInt16()); // (x, y, z), (x, y, z) TransferVec(reader, writer, 6); } } return(true); }