| 4658 | } |
| 4659 | |
| 4660 | void WriteRoomAABBChunk(CFILE *fp) { |
| 4661 | int start_pos; |
| 4662 | int i; |
| 4663 | |
| 4664 | start_pos = StartChunk(fp, CHUNK_ROOM_AABB); |
| 4665 | |
| 4666 | cf_WriteInt(fp, Highest_room_index); |
| 4667 | |
| 4668 | for (i = 0; i <= Highest_room_index; i++) { |
| 4669 | cf_WriteInt(fp, BOA_AABB_ROOM_checksum[i]); |
| 4670 | } |
| 4671 | |
| 4672 | for (i = 0; i <= Highest_room_index; i++) { |
| 4673 | if (Rooms[i].used) { |
| 4674 | int j; |
| 4675 | int k; |
| 4676 | |
| 4677 | ASSERT(Rooms[i].bbf_list && Rooms[i].bbf_list_min_xyz && Rooms[i].bbf_list_max_xyz && Rooms[i].bbf_list_sector); |
| 4678 | |
| 4679 | cf_WriteInt(fp, 1); // used |
| 4680 | |
| 4681 | cf_WriteInt(fp, Rooms[i].num_faces); |
| 4682 | for (j = 0; j < Rooms[i].num_faces; j++) { |
| 4683 | cf_WriteFloat(fp, Rooms[i].faces[j].min_xyz.x); |
| 4684 | cf_WriteFloat(fp, Rooms[i].faces[j].min_xyz.y); |
| 4685 | cf_WriteFloat(fp, Rooms[i].faces[j].min_xyz.z); |
| 4686 | |
| 4687 | cf_WriteFloat(fp, Rooms[i].faces[j].max_xyz.x); |
| 4688 | cf_WriteFloat(fp, Rooms[i].faces[j].max_xyz.y); |
| 4689 | cf_WriteFloat(fp, Rooms[i].faces[j].max_xyz.z); |
| 4690 | } |
| 4691 | |
| 4692 | cf_WriteInt(fp, BOA_AABB_ROOM_checksum[i]); |
| 4693 | |
| 4694 | cf_WriteFloat(fp, Rooms[i].bbf_min_xyz.x); |
| 4695 | cf_WriteFloat(fp, Rooms[i].bbf_min_xyz.y); |
| 4696 | cf_WriteFloat(fp, Rooms[i].bbf_min_xyz.z); |
| 4697 | |
| 4698 | cf_WriteFloat(fp, Rooms[i].bbf_max_xyz.x); |
| 4699 | cf_WriteFloat(fp, Rooms[i].bbf_max_xyz.y); |
| 4700 | cf_WriteFloat(fp, Rooms[i].bbf_max_xyz.z); |
| 4701 | |
| 4702 | cf_WriteShort(fp, Rooms[i].num_bbf_regions); |
| 4703 | for (j = 0; j < Rooms[i].num_bbf_regions; j++) { |
| 4704 | cf_WriteShort(fp, Rooms[i].num_bbf[j]); |
| 4705 | } |
| 4706 | |
| 4707 | for (j = 0; j < Rooms[i].num_bbf_regions; j++) { |
| 4708 | for (k = 0; k < Rooms[i].num_bbf[j]; k++) { |
| 4709 | cf_WriteShort(fp, Rooms[i].bbf_list[j][k]); |
| 4710 | } |
| 4711 | |
| 4712 | cf_WriteFloat(fp, Rooms[i].bbf_list_min_xyz[j].x); |
| 4713 | cf_WriteFloat(fp, Rooms[i].bbf_list_min_xyz[j].y); |
| 4714 | cf_WriteFloat(fp, Rooms[i].bbf_list_min_xyz[j].z); |
| 4715 | |
| 4716 | cf_WriteFloat(fp, Rooms[i].bbf_list_max_xyz[j].x); |
| 4717 | cf_WriteFloat(fp, Rooms[i].bbf_list_max_xyz[j].y); |
no test coverage detected