126 if (m_roomListWithoutReplacement.empty ()) |
126 if (m_roomListWithoutReplacement.empty ()) |
127 { |
127 { |
128 for (BuildingList::Iterator bit = BuildingList::Begin (); bit != BuildingList::End (); ++bit) |
128 for (BuildingList::Iterator bit = BuildingList::Begin (); bit != BuildingList::End (); ++bit) |
129 { |
129 { |
130 NS_LOG_LOGIC ("building " << (*bit)->GetId ()); |
130 NS_LOG_LOGIC ("building " << (*bit)->GetId ()); |
131 for (uint32_t rx = 0; rx < (*bit)->GetNRoomsX (); ++rx) |
131 for (uint32_t rx = 1; rx <= (*bit)->GetNRoomsX (); ++rx) |
132 { |
132 { |
133 for (uint32_t ry = 0; ry < (*bit)->GetNRoomsY (); ++ry) |
133 for (uint32_t ry = 1; ry <= (*bit)->GetNRoomsY (); ++ry) |
134 { |
134 { |
135 for (uint32_t f = 0; f < (*bit)->GetNFloors (); ++f) |
135 for (uint32_t f = 1; f <= (*bit)->GetNFloors (); ++f) |
136 { |
136 { |
137 RoomInfo i; |
137 RoomInfo i; |
138 i.roomx = rx; |
138 i.roomx = rx; |
139 i.roomy = ry; |
139 i.roomy = ry; |
140 i.floor = f; |
140 i.floor = f; |
147 } |
147 } |
148 } |
148 } |
149 uint32_t n = rand.GetInteger (0,m_roomListWithoutReplacement.size () - 1); |
149 uint32_t n = rand.GetInteger (0,m_roomListWithoutReplacement.size () - 1); |
150 RoomInfo r = m_roomListWithoutReplacement.at (n); |
150 RoomInfo r = m_roomListWithoutReplacement.at (n); |
151 m_roomListWithoutReplacement.erase (m_roomListWithoutReplacement.begin () + n); |
151 m_roomListWithoutReplacement.erase (m_roomListWithoutReplacement.begin () + n); |
152 NS_LOG_LOGIC ("considering room (" << r.roomx << ", " << r.roomy << ", " << r.floor << ")"); |
152 NS_LOG_LOGIC ("considering building " << r.b->GetId () << " room (" << r.roomx << ", " << r.roomy << ", " << r.floor << ")"); |
153 |
153 |
154 Ptr<RandomBoxPositionAllocator> pa = CreateObject<RandomBoxPositionAllocator> (); |
154 Ptr<RandomBoxPositionAllocator> pa = CreateObject<RandomBoxPositionAllocator> (); |
155 UniformVariable v; |
155 UniformVariable v; |
156 BoxValue bv; |
156 BoxValue bv; |
157 r.b->GetAttribute ("Boundaries", bv); |
157 r.b->GetAttribute ("Boundaries", bv); |
158 Box box = bv.Get (); |
158 Box box = bv.Get (); |
159 double rdx = (box.xMax - box.xMin) / r.b->GetNRoomsX (); |
159 double rdx = (box.xMax - box.xMin) / r.b->GetNRoomsX (); |
160 double rdy = (box.yMax - box.yMin) / r.b->GetNRoomsY (); |
160 double rdy = (box.yMax - box.yMin) / r.b->GetNRoomsY (); |
161 double rdz = (box.zMax - box.zMin) / r.b->GetNFloors (); |
161 double rdz = (box.zMax - box.zMin) / r.b->GetNFloors (); |
162 double x1 = box.xMin + rdx * r.roomx; |
162 double x1 = box.xMin + rdx * (r.roomx - 1); |
163 double x2 = box.xMin + rdx * (r.roomx + 1); |
163 double x2 = box.xMin + rdx * r.roomx; |
164 double y1 = box.yMin + rdy * r.roomy; |
164 double y1 = box.yMin + rdy * (r.roomy -1); |
165 double y2 = box.yMin + rdy * (r.roomy + 1); |
165 double y2 = box.yMin + rdy * r.roomy; |
166 double z1 = box.zMin + rdz * r.floor; |
166 double z1 = box.zMin + rdz * (r.floor - 1); |
167 double z2 = box.zMin + rdz * (r.floor + 1); |
167 double z2 = box.zMin + rdz * r.floor; |
168 NS_LOG_LOGIC ("randomly allocating position in " |
168 NS_LOG_LOGIC ("randomly allocating position in " |
169 << " (" << x1 << "," << x2 << ") " |
169 << " (" << x1 << "," << x2 << ") " |
170 << "x (" << y1 << "," << y2 << ") " |
170 << "x (" << y1 << "," << y2 << ") " |
171 << "x (" << z1 << "," << z2 << ") "); |
171 << "x (" << z1 << "," << z2 << ") "); |
172 |
172 |
245 b->GetAttribute ("Boundaries", bv); |
245 b->GetAttribute ("Boundaries", bv); |
246 Box box = bv.Get (); |
246 Box box = bv.Get (); |
247 double rdx = (box.xMax - box.xMin) / b->GetNRoomsX (); |
247 double rdx = (box.xMax - box.xMin) / b->GetNRoomsX (); |
248 double rdy = (box.yMax - box.yMin) / b->GetNRoomsY (); |
248 double rdy = (box.yMax - box.yMin) / b->GetNRoomsY (); |
249 double rdz = (box.zMax - box.zMin) / b->GetNFloors (); |
249 double rdz = (box.zMax - box.zMin) / b->GetNFloors (); |
250 double x1 = box.xMin + rdx * roomx; |
250 double x1 = box.xMin + rdx * (roomx - 1); |
251 double x2 = box.xMin + rdx * (roomx + 1); |
251 double x2 = box.xMin + rdx * roomx; |
252 double y1 = box.yMin + rdy * roomy; |
252 double y1 = box.yMin + rdy * (roomy -1); |
253 double y2 = box.yMin + rdy * (roomy + 1); |
253 double y2 = box.yMin + rdy * roomy; |
254 double z1 = box.zMin + rdz * floor; |
254 double z1 = box.zMin + rdz * (floor - 1); |
255 double z2 = box.zMin + rdz * (floor + 1); |
255 double z2 = box.zMin + rdz * floor; |
256 NS_LOG_LOGIC ("randomly allocating position in " |
256 NS_LOG_LOGIC ("randomly allocating position in " |
257 << " (" << x1 << "," << x2 << ") " |
257 << " (" << x1 << "," << x2 << ") " |
258 << "x (" << y1 << "," << y2 << ") " |
258 << "x (" << y1 << "," << y2 << ") " |
259 << "x (" << z1 << "," << z2 << ") "); |
259 << "x (" << z1 << "," << z2 << ") "); |
260 |
260 |