(file)
| 192 | return area; |
| 193 | } |
| 194 | |
| 195 | /** |
| 196 | * Load an OBJ from a File object. |
| 197 | * Returns { geometry, bounds }. |
| 198 | */ |
| 199 | export function loadOBJFile(file) { |
| 200 | if (file.size > MAX_FILE_SIZE) { |
| 201 | return Promise.reject(new Error( |
| 202 | 'File too large (' + Math.round(file.size / 1024 / 1024) + ' MB). Maximum supported: ' + (MAX_FILE_SIZE / 1024 / 1024) + ' MB.' |
| 203 | )); |
| 204 | } |
| 205 | return new Promise((resolve, reject) => { |
| 206 | const reader = new FileReader(); |
| 207 | reader.onload = (e) => { |
| 208 | try { |
| 209 | const group = objLoader.parse(e.target.result); |
| 210 | const geometry = mergeGroupGeometries(group); |
| 211 | const { nanCount, degenerateCount, originOffset } = setupGeometry(geometry); |
| 212 | const bounds = computeBounds(geometry); |
| 213 | resolve({ geometry, bounds, nanCount, degenerateCount, originOffset }); |
| 214 | } catch (err) { |
| 215 | reject(err); |
| 216 | } |
| 217 | }; |
| 218 | reader.onerror = () => reject(new Error('Could not read file')); |
| 219 | reader.readAsText(file); |
no test coverage detected