126 {
127 uint32 check = 0, nameLen;
128 check += fread(&spawn.flags,
sizeof(
uint32), 1, rf);
129
130 if (!check)
131 {
132 if (ferror(rf))
133 {
134 std::cout << "Error reading ModelSpawn!\n";
135 }
136 return false;
137 }
138 check += fread(&spawn.adtId,
sizeof(
uint16), 1, rf);
139 check += fread(&spawn.ID,
sizeof(
uint32), 1, rf);
140 check += fread(&spawn.iPos, sizeof(float), 3, rf);
141 check += fread(&spawn.iRot, sizeof(float), 3, rf);
142 check += fread(&spawn.iScale, sizeof(float), 1, rf);
144 if (has_bound)
145 {
146 Vector3 bLow, bHigh;
147 check += fread(&bLow, sizeof(float), 3, rf);
148 check += fread(&bHigh, sizeof(float), 3, rf);
149 spawn.iBound = G3D::AABox(bLow, bHigh);
150 }
151 check += fread(&nameLen,
sizeof(
uint32), 1, rf);
152 if (check !=
uint32(has_bound ? 17 : 11))
153 {
154 std::cout << "Error reading ModelSpawn!\n";
155 return false;
156 }
157 char nameBuff[500];
158 if (nameLen > 500)
159 {
160 std::cout << "Error reading ModelSpawn, file name too long!\n";
161 return false;
162 }
163 check = fread(nameBuff, sizeof(char), nameLen, rf);
164 if (check != nameLen)
165 {
166 std::cout << "Error reading ModelSpawn!\n";
167 return false;
168 }
169 spawn.name = std::string(nameBuff, nameLen);
170 return true;
171 }
std::uint32_t uint32
Definition Define.h:107
std::uint16_t uint16
Definition Define.h:108
@ MOD_HAS_BOUND
Definition ModelInstance.h:38