コード例 #1
0
            public IEnumerable <Projection <TValue> > Visit(SceneVertex vertex, Arguments args)
            {
                IVertexBase vertexBase = vertex;

                foreach (Projection <TValue> projection in Visit(vertexBase, args))
                {
                    yield return(projection);
                }
            }
コード例 #2
0
        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);
        }
コード例 #3
0
 public void AddSceneVertex(ISceneNode sceneRoot, SceneVertex vertex) => _sceneVertices[sceneRoot] = vertex;