/// <summary> /// Get the apertures /// </summary> /// <param name="lensOptions"></param> /// <returns></returns> protected override IChunkResolutionAperture[] initializeApertures(ILensOptions lensOptions) { PlayerLensOptions playerLensOptions = (PlayerLensOptions)lensOptions; return(new IChunkResolutionAperture[] { new VoxelDataLoadedAperture( this, playerLensOptions.baseChunkRadius + MeshedChunkBuffer + LoadedChunkBuffer, playerLensOptions.baseChunkRadiusHeightOverride == 0 ? playerLensOptions.baseChunkRadius + MeshedChunkBuffer + LoadedChunkBuffer : playerLensOptions.baseChunkRadiusHeightOverride + ChunkBufferHeightOverride + ChunkBufferHeightOverride ), new MeshGenerationAperture( this, playerLensOptions.baseChunkRadius + MeshedChunkBuffer, playerLensOptions.baseChunkRadiusHeightOverride == 0 ? playerLensOptions.baseChunkRadius + MeshedChunkBuffer : playerLensOptions.baseChunkRadiusHeightOverride + ChunkBufferHeightOverride ), new ChunkVisibilityAperture( this, playerLensOptions.baseChunkRadius, playerLensOptions.baseChunkRadiusHeightOverride == 0 ? playerLensOptions.baseChunkRadius : playerLensOptions.baseChunkRadiusHeightOverride ) }); }
/// <summary> /// Create a new level of the given size that uses the given apetures. /// </summary> /// <param name="chunkBounds"></param> /// <param name="apeturesByPriority"></param> protected FocusLens(Level level, ILevelFocus focus, ILensOptions lensOptions) { this.level = level; this.focus = focus; apeturesByPriority = initializeApertures(lensOptions); foreach (IChunkResolutionAperture aperture in apeturesByPriority) { apeturesByResolution[aperture.resolution] = aperture; } }
/// <summary> /// Get the initialized apertures this lens will be constructed of in order of priority /// </summary> /// <returns></returns> protected abstract IChunkResolutionAperture[] initializeApertures(ILensOptions lensOptions = null);