private ISceneAsset TransformScene(Scene scene, string id, ReaderContext context) { var sceneAsset = new SceneAsset(id); foreach (var node in scene.VisualChildren) { var nodeAsset = (NodeAsset)context.Nodes[node.LogicalIndex]; sceneAsset.Add(nodeAsset); AttachChildren(node, nodeAsset, context); } return(sceneAsset); }
public virtual IEnumerable <ISceneAsset> Apply(ISceneAsset scene) { var transformedScene = new SceneAsset(scene.Id); foreach (var node in scene.ChildNodes) { NodeAsset parent = null; foreach (var transformedNode in Apply(null, node)) { transformedScene.Add(transformedNode); parent = transformedNode; } if (parent != null) { foreach (var childNode in node.ChildNodes) { ApplyOnSubtree(parent, childNode); } } } yield return(transformedScene); }