public ObjectsParser(IContainer <SlamInfinitePlane> infinitePlanes,
                      IConnectableObjectsContainer <SlamPoint> points,
                      IConnectableObjectsContainer <SlamObservation> observations,
                      string imagePath)
 {
     _infinitePlanes = infinitePlanes;
     _points         = points;
     _observations   = observations;
     _imagePath      = imagePath;
 }
        private ICommand GetCommandForConnectableObjects <TCloudItem, TCloudItemDiff>(
            IConnectableObjectsContainer <TCloudItem> map,
            IList <TCloudItemDiff> objects, PacketPb packet)
            where TCloudItem : struct, ICloudItem
            where TCloudItemDiff : struct, ICloudItemDiff <TCloudItem>
        {
            if (objects is null || objects.Count == 0)
            {
                return(null);
            }
            switch (packet.Action)
            {
            case PacketPb.Types.ActionType.Add:
                return(new AddCommand <TCloudItem, TCloudItemDiff>(map, objects));

            case PacketPb.Types.ActionType.Update:
                var commands = new List <ICommand>();
                if (packet.Connections != null)
                {
                    var connections = packet.Connections.Data.Select(c => (c.Id1, c.Id2)).ToArray();
                    switch (packet.Connections.Action)
                    {
                    case PacketPb.Types.Connections.Types.Action.Add:
                        commands.Add(new AddConnectionsCommand <TCloudItem>(map, connections));
                        break;

                    case PacketPb.Types.Connections.Types.Action.Remove:
                        commands.Add(new RemoveConnectionsCommand <TCloudItem>(map, connections));
                        break;
                    }
                }

                commands.Add(new UpdateCommand <TCloudItem, TCloudItemDiff>(map, objects));
                return(new MacroCommand(commands));

            case PacketPb.Types.ActionType.Remove:
                return(new ConnectableRemoveCommand <TCloudItem, TCloudItemDiff>(map, objects));

            case PacketPb.Types.ActionType.Clear:
                return(new ConnectableClearCommand <TCloudItem>(map));

            default:
                return(null);
            }
        }
        public ProtobufContainerTree(string displayName, ISourceTree image, SlamDataInfoPresenter specialInfo = null)
        {
            DisplayName = displayName;
            Image       = image;
            SpecialInfo = specialInfo;

            TrackedObjs  = new TrackedObjectsContainer("Tracked objects");
            Observations = new ConnectableObjectsContainer <SlamObservation>(
                new CloudContainer <SlamObservation>("Points"),
                new SlamLinesContainer("Connections"),
                "Observations");
            Points = new ConnectableObjectsContainer <SlamPoint>(
                new CloudContainer <SlamPoint>("Points"),
                new SlamLinesContainer("Connections"),
                "Points");
            Connector      = new Connector(Points, Observations, "Connections");
            Lines          = new SlamLinesContainer("Lines");
            MeshContainer  = new MeshReconstructor(Points, "Mesh");
            InfinitePlanes = new CloudContainer <SlamInfinitePlane>("Infinite planes");
            var observationsGraph = new VirtualContainer("Observations graph", new List <ISourceTree>
            {
                (ISourceTree)Observations,
                Connector
            });
            var ch = new List <ISourceTree>
            {
                (ISourceTree)Points,
                (ISourceTree)TrackedObjs,
                (ISourceTree)InfinitePlanes,
                observationsGraph,
                (ISourceTree)Lines,
                MeshContainer,
                Image,
            };

            if (SpecialInfo != null)
            {
                ch.Add(SpecialInfo);
            }
            Children = ch.ToArray();
        }
示例#4
0
 public PointsMapManager(IConnectableObjectsContainer <SlamPoint> container, ICSConverter converter)
     : base(container)
 {
     _converter = converter;
 }
示例#5
0
 protected ConnectableObjectsMapManager(IConnectableObjectsContainer <TCloudItem> container) : base(container)
 {
     _connectableContainer = container;
 }
 public ObservationsMapManager(IConnectableObjectsContainer <SlamObservation> container, ICSConverter converter) :
     base(container)
 {
     _converter = converter;
 }