private IStage UnPackStage(ZipArchive archive, IActionResult actionResult) { var hierarchyResult = GetArchiveHierarchy(archive.Entries); if (!hierarchyResult.Success) { actionResult.CombineWith(hierarchyResult); return(null); } var stageArchiveEntry = hierarchyResult.Value; var stageEntity = UnPackEntity(stageArchiveEntry, actionResult); ValidateEntity <IStage>(stageEntity, actionResult); if (!actionResult.Success) { return(null); } var stage = (IStage)stageEntity; if (stageArchiveEntry.Items != null) { UnPackSceneEntities(stage, stageArchiveEntry.Items, actionResult); } return(stage); }
private void UnPackSceneEntities(IStage stage, IEnumerable <IArchiveEntry <ZipArchiveEntry> > sceneEntityArchiveEntries, IActionResult actionResult) { foreach (var sceneEntityArchiveEntry in sceneEntityArchiveEntries) { var sceneEntityActionResult = new ActionResult <ISceneEntity>(); var entity = UnPackEntity(sceneEntityArchiveEntry, sceneEntityActionResult); ValidateEntity <ISceneEntity>(entity, sceneEntityActionResult); if (sceneEntityActionResult.Success) { var sceneEntity = (ISceneEntity)entity; if (sceneEntityArchiveEntry.Geometry != null) { UnPackGeometry(sceneEntityArchiveEntry.Geometry, sceneEntity, sceneEntityActionResult); } if (sceneEntityActionResult.Success) { stage.Add(sceneEntity); } } actionResult.CombineWith(sceneEntityActionResult); } }