public ProjectionBuilder(IVertexBase source, TValue value, ProjectionVisitor <TValue> visitor, ProjectionGraph graph) { Source = source; Value = value; _visitor = visitor; _graph = graph; }
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 IProjectionController <Transformation> ProjectFrom(ISceneNode sceneNode, Transformation transformation) { ProjectionGraph graph = BuildProjectionGraph(); return(new ProjectionBuilder <Transformation>(graph.GetSceneVertex(sceneNode), transformation, new TransformationProjectionVisitor(), graph)); }
public IProjectionController <Transformation> ProjectFrom(IView view, Transformation transformationOnView) { ProjectionGraph graph = BuildProjectionGraph(); return(new ProjectionBuilder <Transformation>(graph.GetViewVertex(view), transformationOnView, new TransformationProjectionVisitor(), graph)); }
public IProjectionController <Vector2> ProjectFromPosition(ISceneNode sceneNode) { ProjectionGraph graph = BuildProjectionGraph(); return(new ProjectionBuilder <Vector2>(graph.GetSceneVertex(sceneNode), sceneNode.Position, new PositionProjectionVisitor(), graph)); }
public IProjectionController <Vector2> ProjectFromPosition(IView view, Vector2 positionOnView) { ProjectionGraph graph = BuildProjectionGraph(); return(new ProjectionBuilder <Vector2>(graph.GetViewVertex(view), positionOnView, new PositionProjectionVisitor(), graph)); }