private void SetView(ViewDefinitionInfo info) { currentViewInfo = info; this.radGridView1.FilterDescriptors.Clear(); this.radGridView1.BeginUpdate(); foreach (GridViewColumn col in this.radGridView1.Columns) { col.IsVisible = info.Columns.Contains(col.Name); } GridTraverser traverser = new GridTraverser(this.radGridView1.MasterView); while (traverser.MoveNext()) { if (traverser.Current is GridViewDataRowInfo) { traverser.Current.Height = info.RowHeight; } } this.radGridView1.MasterView.TableHeaderRow.Height = info.HeaderHeight; this.radGridView1.EndUpdate(false); this.radGridView1.ViewDefinition = info.ViewDefinition; this.radGridView1.PrintStyle.FitWidthMode = PrintFitWidthMode.NoFitCentered; }
public VoxelBlock Raycast(Ray ray, out VoxelBlock emptyTargetedBlock) { VoxelBlock last = null; VoxelBlock ret = null; var traverser = new GridTraverser(); float?closest = null; foreach (VoxelTerrainChunk terr in TW.Data.Objects.Where(o => o is VoxelTerrainChunk)) { var trace = new RayTrace(); trace.Ray = ray; float?dist = trace.Ray.xna().Intersects(terr.GetBoundingBox().xna()); if (!dist.HasValue) { continue; } if (closest.HasValue && closest.Value < dist.Value) { continue; } trace.Start = dist.Value + 0.001f; traverser.NodeSize = terr.NodeSize; traverser.GridOffset = terr.WorldPosition; //TODO: fix multiple terrains var hit = false; VoxelTerrainChunk terr1 = terr; traverser.Traverse(trace, delegate(Point3 arg) { if (!terr1.InGrid(arg)) { return(true); } var voxelBlock = terr1.GetVoxelInternal(ref arg); if (voxelBlock == null) { return(false); } if (voxelBlock.Filled) { hit = true; ret = getChunkVoxelWrapper(terr1, arg); return(true); } last = getChunkVoxelWrapper(terr1, arg); return(false); }); if (hit) { closest = dist; } } emptyTargetedBlock = last; return(ret); }