public IEnumerable <Projection <TValue> > Visit(SceneVertex vertex, Arguments args) { IVertexBase vertexBase = vertex; foreach (Projection <TValue> projection in Visit(vertexBase, args)) { yield return(projection); } }
private ProjectionGraph BuildProjectionGraph() { var graph = new ProjectionGraph(); foreach (IView view in Views) { if (view.Camera == null) { continue; } var viewVertex = new ViewVertex(view); graph.AddViewVertex(view, viewVertex); ISceneNode viewSceneRoot = view.GetSceneNode().RootNode(); if (viewSceneRoot != null) { SceneVertex viewSceneVertex = graph.GetSceneVertex(viewSceneRoot); if (viewSceneVertex == null) { viewSceneVertex = new SceneVertex(viewSceneRoot); graph.AddSceneVertex(viewSceneRoot, viewSceneVertex); } new SceneToViewEdge().Link(viewSceneVertex, viewVertex); } ISceneNode cameraSceneRoot = view.Camera.GetSceneNode().RootNode(); SceneVertex cameraSceneVertex = graph.GetSceneVertex(cameraSceneRoot); if (cameraSceneVertex == null) { cameraSceneVertex = new SceneVertex(cameraSceneRoot); graph.AddSceneVertex(cameraSceneRoot, cameraSceneVertex); } new ViewToSceneEdge().Link(viewVertex, cameraSceneVertex); } return(graph); }
public void AddSceneVertex(ISceneNode sceneRoot, SceneVertex vertex) => _sceneVertices[sceneRoot] = vertex;