Пример #1
0
        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);
        }
Пример #2
0
        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);
            }
        }