public QuadNode(IQuadMesh mesh, IQuadNodeFactory quadNodeFactory, IQuadNodeRenderer renderer, ISettings settings, Statistics statistics) { _mesh = mesh; _quadNodeFactory = quadNodeFactory; _renderer = renderer; _settings = settings; _statistics = statistics; }
public QuadNode(IQuadMesh mesh, IQuadNodeFactory quadNodeFactory, ISplitMergeStrategy splitMergeStrategy, ITaskSchedulerFactory taskSchedulerFactory, IQuadNodeRenderer renderer, Statistics statistics) { _mesh = mesh; _quadNodeFactory = quadNodeFactory; _splitMergeStrategy = splitMergeStrategy; _taskSchedulerFactory = taskSchedulerFactory; _renderer = renderer; _statistics = statistics; }
public bool ShouldMerge(IQuadMesh mesh) { return(!IsMeshCloseAndVisible(mesh)); }
bool IsMeshCloseAndVisible(IQuadMesh mesh) { return(mesh.IsAboveHorizonToCamera && mesh.CameraDistanceToWidthRatio < 1); }
public bool ShouldSplit(IQuadMesh mesh, int level) { return(IsMeshCloseAndVisible(mesh) && !IsAtMaximumLevelOfDetail(level)); }
public TestableQuadNode(IQuadMesh mesh, IQuadNodeFactory quadNodeFactory, IQuadNodeRenderer renderer, ISettings settings, Statistics statistics) : base(mesh, quadNodeFactory, renderer, settings, statistics) { }
public TestableQuadNode(IQuadMesh mesh, IQuadNodeFactory quadNodeFactory, ISplitMergeStrategy splitMergeStrategy, IQuadNodeRenderer renderer, Statistics statistics) : base(mesh, quadNodeFactory, splitMergeStrategy, new CurrentThreadTaskSchedulerFactory(), renderer, statistics) { // We create this version of the QuadNode with a task scheduler type that runs everything on the // current thread, i.e. everything is synchronous and there are no threading issues to worry about. }
bool IsMeshCloseAndVisible(IQuadMesh mesh) { return mesh.IsAboveHorizonToCamera && mesh.CameraDistanceToWidthRatio < 1; }
public bool ShouldSplit(IQuadMesh mesh, int level) { return (IsMeshCloseAndVisible(mesh) && !IsAtMaximumLevelOfDetail(level)); }
public bool ShouldMerge(IQuadMesh mesh) { return (!IsMeshCloseAndVisible(mesh)); }