Esempio n. 1
0
 private void loadMXDOCBbutton_Click(object sender, EventArgs e)
 {
     IMapDocument mapDox = new MapDocument();
     mapDox.Open(@"C:\Program Files (x86)\ArcGIS\DeveloperKit10.2\Samples\data\California\California.mxd");
     for (int i = 0; i < mapDox.MapCount; i++)
     {
         mapsComboBox.Items.Add(mapDox.get_Map(i).Name);
     }
 }
 public void SetActiveDocument(MapDocument doc)
 {
     _document.SetTarget(doc);
 }
 protected override void KeyDown(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e)
 {
     HandleKeyDown(e);
     base.KeyDown(document, viewport, camera, e);
 }
Esempio n. 4
0
        // Rendering

        protected override void Render(MapDocument document, BufferBuilder builder, ResourceCollector resourceCollector)
        {
            if (_state != EntityState.None)
            {
                var vec  = _location;
                var high = 1024f * 1024f;
                var low  = -high;

                // Draw a box around the point
                var c = new Box(vec - Vector3.One * 10, vec + Vector3.One * 10);

                const uint numVertices         = 4 * 6 + 6;
                const uint numWireframeIndices = numVertices * 2;

                var points  = new VertexStandard[numVertices];
                var indices = new uint[numWireframeIndices];

                var colour = new Vector4(0, 1, 0, 1);

                var vi = 0u;
                var wi = 0u;
                foreach (var face in c.GetBoxFaces())
                {
                    var offs = vi;

                    foreach (var v in face)
                    {
                        points[vi++] = new VertexStandard {
                            Position = v,
                            Colour   = colour,
                            Tint     = Vector4.One
                        };
                    }

                    // Lines - [0 1] ... [n-1 n] [n 0]
                    for (uint i = 0; i < 4; i++)
                    {
                        indices[wi++] = offs + i;
                        indices[wi++] = offs + (i == 4 - 1 ? 0 : i + 1);
                    }
                }

                // Draw 3 lines pinpointing the point
                var lineOffset = vi;

                points[vi++] = new VertexStandard {
                    Position = new Vector3(low, vec.Y, vec.Z), Colour = colour, Tint = Vector4.One
                };
                points[vi++] = new VertexStandard {
                    Position = new Vector3(high, vec.Y, vec.Z), Colour = colour, Tint = Vector4.One
                };
                points[vi++] = new VertexStandard {
                    Position = new Vector3(vec.X, low, vec.Z), Colour = colour, Tint = Vector4.One
                };
                points[vi++] = new VertexStandard {
                    Position = new Vector3(vec.X, high, vec.Z), Colour = colour, Tint = Vector4.One
                };
                points[vi++] = new VertexStandard {
                    Position = new Vector3(vec.X, vec.Y, low), Colour = colour, Tint = Vector4.One
                };
                points[vi++] = new VertexStandard {
                    Position = new Vector3(vec.X, vec.Y, high), Colour = colour, Tint = Vector4.One
                };

                indices[wi++] = lineOffset++;
                indices[wi++] = lineOffset++;
                indices[wi++] = lineOffset++;
                indices[wi++] = lineOffset++;
                indices[wi++] = lineOffset++;
                indices[wi++] = lineOffset++;

                var groups = new[]
                {
                    new BufferGroup(PipelineType.Wireframe, CameraType.Both, 0, numWireframeIndices)
                };

                builder.Append(points, indices, groups);
            }

            base.Render(document, builder, resourceCollector);
        }
Esempio n. 5
0
 protected override void MouseLeave(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e)
 {
     viewport.Control.Cursor = Cursors.Cross;
 }
 public Task UpdateDocumentData(MapDocument document)
 {
     return(Task.FromResult(0));
 }
Esempio n. 7
0
 public override void Unhighlight(MapDocument document, MapViewport viewport)
 {
     //
 }
Esempio n. 8
0
 public override void Click(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 position)
 {
     State.Action = BoxAction.Idle;
 }
Esempio n. 9
0
 public abstract void Render(MapDocument document, BufferBuilder builder);
Esempio n. 10
0
 public abstract void Unhighlight(MapDocument document, MapViewport viewport);
Esempio n. 11
0
 public abstract bool CanDrag(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 position);
Esempio n. 12
0
 public abstract void Click(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 position);
Esempio n. 13
0
 public virtual void MouseUp(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 position)
 {
 }
Esempio n. 14
0
 public virtual void EndDrag(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 position)
 {
     OnDragEnded();
 }
Esempio n. 15
0
 public bool ShouldStopProcessing(MapDocument document, IMapObject obj)
 {
     return(false);
 }
Esempio n. 16
0
 protected override void MouseLeave(MapDocument document, MapViewport viewport, PerspectiveCamera camera, ViewportEvent e)
 {
     ActiveViewport = null;
     base.MouseLeave(document, viewport, camera, e);
 }
Esempio n. 17
0
        private List <VisgroupItem> GetItemHierarchies(MapDocument document)
        {
            var list = new List <VisgroupItem>();

            // add user visgroups
            var visgroups = document.Map.Data.Get <Primitives.MapData.Visgroup>().ToList();

            foreach (var v in visgroups)
            {
                list.Add(new VisgroupItem(v.Name)
                {
                    CheckState = GetVisibilityCheckState(v.Objects),
                    Colour     = v.Colour,
                    Tag        = v
                });
            }

            var auto = new VisgroupItem(AutoVisgroups)
            {
                Disabled = true
            };

            list.Insert(0, auto);

            // add auto visgroups
            var autoVisgroups = document.Map.Data.Get <AutomaticVisgroup>().ToList();
            var parents       = new Dictionary <string, VisgroupItem> {
                { "", auto }
            };

            foreach (var av in autoVisgroups.OrderBy(x => x.Path.Length))
            {
                VisgroupItem parent = auto;
                if (!parents.ContainsKey(av.Path))
                {
                    var path = new List <string>();
                    foreach (var spl in av.Path.Split('/'))
                    {
                        path.Add(spl);
                        var seg = String.Join("/", path);
                        if (!parents.ContainsKey(seg))
                        {
                            var group = new VisgroupItem(_translation.GetString(spl))
                            {
                                Parent   = parent,
                                Disabled = true
                            };
                            list.Add(group);
                            parents[seg] = group;
                        }
                        parent = parents[seg];
                    }
                }
                else
                {
                    parent = parents[av.Path];
                }
                list.Add(new VisgroupItem(_translation.GetString(av.Key))
                {
                    CheckState = GetVisibilityCheckState(av.Objects),
                    Tag        = av,
                    Parent     = parent
                });
            }

            for (var i = list.Count - 1; i >= 0; i--)
            {
                var v = list[i];
                if (v.Tag != null)
                {
                    continue;
                }

                var children = list.Where(x => x.Parent == v).ToList();
                if (children.All(x => x.CheckState == CheckState.Checked))
                {
                    v.CheckState = CheckState.Checked;
                }
                else if (children.All(x => x.CheckState == CheckState.Unchecked))
                {
                    v.CheckState = CheckState.Unchecked;
                }
                else
                {
                    v.CheckState = CheckState.Indeterminate;
                }
            }

            return(list);
        }
Esempio n. 18
0
 public override bool CanDrag(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 position)
 {
     return(true);
 }
Esempio n. 19
0
 public Task <Change> Reverse(MapDocument document)
 {
     return(Perform(document)); // Reversing this operation means just performing it again
 }
Esempio n. 20
0
 public override void Drag(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e, Vector3 lastPosition, Vector3 position)
 {
     State.End = Tool.SnapIfNeeded(camera.Expand(position)) + camera.GetUnusedCoordinate(State.End);
     base.Drag(document, viewport, camera, e, lastPosition, position);
 }
Esempio n. 21
0
 /// <summary>
 /// Set the current grid that is being rendered by extracting it from a document.
 /// </summary>
 /// <param name="doc">The document to extract the grid data from</param>
 public void SetGrid(MapDocument doc)
 {
     _grid      = doc?.Map.Data.GetOne <GridData>()?.Grid;
     _validated = false;
 }
 protected override Task Invoke(MapDocument document, CommandParameters parameters)
 {
     _host.Value.CreateNewWindow();
     return(Task.CompletedTask);
 }
Esempio n. 23
0
 public Task BeforeSave(MapDocument document)
 {
     return(Task.FromResult(0));
 }
Esempio n. 24
0
        private async Task CreateEntity(MapDocument document, Vector3 origin, string gd = null)
        {
            if (gd == null)
            {
                gd = _activeEntity;
            }
            if (gd == null)
            {
                return;
            }

            var colour = Colour.GetDefaultEntityColour();
            var data   = await document.Environment.GetGameData();

            if (data != null)
            {
                var cls = data.Classes.FirstOrDefault(x => String.Equals(x.Name, gd, StringComparison.InvariantCultureIgnoreCase));
                if (cls != null)
                {
                    var col = cls.Behaviours.Where(x => x.Name == "color").ToArray();
                    if (col.Any())
                    {
                        colour = col[0].GetColour(0);
                    }
                }
            }

            var entity = new Primitives.MapObjects.Entity(document.Map.NumberGenerator.Next("MapObject"))
            {
                Data =
                {
                    new EntityData {
                        Name = gd
                    },
                    new ObjectColor(colour),
                    new Origin(origin),
                }
            };

            var transaction = new Transaction();

            transaction.Add(new Attach(document.Map.Root.ID, entity));

            if (_selectCreatedEntity)
            {
                transaction.Add(new Deselect(document.Selection));
                transaction.Add(new Select(entity.FindAll()));
            }

            await MapDocumentOperation.Perform(document, transaction);

            if (_switchToSelectAfterCreation)
            {
                Oy.Publish("ActivateTool", "SelectTool");
            }

            if (_resetEntityTypeOnCreation)
            {
                Oy.Publish("EntityTool:ResetEntityType", this);
            }
        }
Esempio n. 25
0
 protected override void OnSetProperty(MapDocument document)
 {
     _checkBox.Text    = Property.DisplayText();
     _checkBox.Checked = String.Equals(PropertyValue, "Yes", StringComparison.CurrentCultureIgnoreCase);
 }
Esempio n. 26
0
 protected override void OnSetProperty(MapDocument document)
 {
     _textBox.Text = PropertyValue;
 }
Esempio n. 27
0
        protected override async Task Invoke(MapDocument document, CommandParameters parameters)
        {
            var carver = document.Selection.OfType <Solid>().FirstOrDefault();

            if (carver == null)
            {
                return;
            }

            var objects = document.Map.Root
                          .Find(x => x is Solid && x.BoundingBox.IntersectsWith(carver.BoundingBox))
                          .OfType <Solid>()
                          .Where(x => !ReferenceEquals(x, carver));

            var ops = new List <IOperation>();

            foreach (var obj in objects)
            {
                var split = false;
                var solid = obj;

                foreach (var plane in carver.Faces.Select(x => x.Plane))
                {
                    // Split solid by plane
                    Solid back, front;
                    try
                    {
                        if (!solid.Split(document.Map.NumberGenerator, plane, out back, out front))
                        {
                            continue;
                        }
                    }
                    catch
                    {
                        // We're not too fussy about over-complicated carving, just get out if we've broken it.
                        break;
                    }
                    split = true;

                    if (front != null)
                    {
                        // Retain the front solid
                        if (solid.IsSelected)
                        {
                            front.IsSelected = true;
                        }
                        ops.Add(new Attach(obj.Hierarchy.Parent.ID, front));
                    }

                    if (back == null || !back.IsValid())
                    {
                        break;
                    }

                    // Use the back solid as the new clipping target
                    if (solid.IsSelected)
                    {
                        back.IsSelected = true;
                    }
                    solid = back;
                }

                if (!split)
                {
                    continue;
                }
                ops.Add(new Detatch(obj.Hierarchy.Parent.ID, obj));
            }

            if (ops.Any())
            {
                await MapDocumentOperation.Perform(document, new Transaction(ops));
            }
        }
 protected override void KeyDown(MapDocument document, MapViewport viewport, PerspectiveCamera camera, ViewportEvent e)
 {
     HandleKeyDown(e);
     base.KeyDown(document, viewport, camera, e);
 }
Esempio n. 29
0
 protected override bool IsInContext(IContext context, MapDocument document)
 {
     return(base.IsInContext(context, document) && !document.Selection.IsEmpty);
 }
Esempio n. 30
0
 protected override bool IsInContext(IContext context, MapDocument document)
 {
     return(base.IsInContext(context, document) &&
            document.Selection.Any(x => x is Solid));
 }
Esempio n. 31
0
 protected override void MouseEnter(MapDocument document, MapViewport viewport, OrthographicCamera camera, ViewportEvent e)
 {
     ActiveViewport = viewport;
     base.MouseEnter(document, viewport, camera, e);
 }