| 287 | // SceneData |
| 288 | |
| 289 | void SceneCache::writeSceneData(OutputStream& stream, const Scene::SceneData& sceneData) |
| 290 | { |
| 291 | writeMarker(stream, "Paths"); |
| 292 | stream.write((uint32_t)sceneData.importPaths.size()); |
| 293 | for (const auto& pPath: sceneData.importPaths) stream.write(pPath); |
| 294 | |
| 295 | writeMarker(stream, "Dicts"); |
| 296 | stream.write((uint32_t)sceneData.importDicts.size()); |
| 297 | for (const auto& pDict: sceneData.importDicts) stream.write(pDict); |
| 298 | |
| 299 | writeMarker(stream, "RenderSettings"); |
| 300 | stream.write(sceneData.renderSettings); |
| 301 | |
| 302 | writeMarker(stream, "Cameras"); |
| 303 | stream.write((uint32_t)sceneData.cameras.size()); |
| 304 | for (const auto& pCamera : sceneData.cameras) writeCamera(stream, pCamera); |
| 305 | stream.write(sceneData.selectedCamera); |
| 306 | stream.write(sceneData.cameraSpeed); |
| 307 | |
| 308 | writeMarker(stream, "Lights"); |
| 309 | stream.write((uint32_t)sceneData.lights.size()); |
| 310 | for (const auto& pLight : sceneData.lights) writeLight(stream, pLight); |
| 311 | |
| 312 | writeMarker(stream, "Grids"); |
| 313 | stream.write((uint32_t)sceneData.grids.size()); |
| 314 | for (const auto& pGrid : sceneData.grids) writeGrid(stream, pGrid); |
| 315 | |
| 316 | writeMarker(stream, "GridVolumes"); |
| 317 | stream.write((uint32_t)sceneData.gridVolumes.size()); |
| 318 | for (const auto& pGridVolume : sceneData.gridVolumes) writeGridVolume(stream, pGridVolume, sceneData.grids); |
| 319 | |
| 320 | writeMarker(stream, "EnvMap"); |
| 321 | bool hasEnvMap = sceneData.pEnvMap != nullptr; |
| 322 | stream.write(hasEnvMap); |
| 323 | if (hasEnvMap) writeEnvMap(stream, sceneData.pEnvMap); |
| 324 | |
| 325 | writeMarker(stream, "Materials"); |
| 326 | writeMaterials(stream, *sceneData.pMaterials); |
| 327 | |
| 328 | writeMarker(stream, "SceneGraph"); |
| 329 | stream.write((uint32_t)sceneData.sceneGraph.size()); |
| 330 | for (const auto& node : sceneData.sceneGraph) |
| 331 | { |
| 332 | stream.write(node.name); |
| 333 | stream.write(node.parent); |
| 334 | stream.write(node.transform); |
| 335 | stream.write(node.meshBind); |
| 336 | stream.write(node.localToBindSpace); |
| 337 | } |
| 338 | |
| 339 | writeMarker(stream, "Animations"); |
| 340 | stream.write((uint32_t)sceneData.animations.size()); |
| 341 | for (const auto& pAnimation : sceneData.animations) |
| 342 | { |
| 343 | writeAnimation(stream, pAnimation); |
| 344 | } |
| 345 | |
| 346 | writeMarker(stream, "Metadata"); |