Пример #1
0
        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;
        }
Пример #2
0
        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);
        }