示例#1
0
 /// <summary>
 /// Zdarzenie wywoływane gdy obiekt wedźie w pole wykrywania
 /// </summary>
 /// <param name="collision"></param>
 public void OnTriggerEnter2D(Collider2D collision)
 {
     if (Filter(collision.gameObject) && !TrackedObjects.Exists(obj => obj == collision.gameObject))
     {
         TrackedObjects.Add(collision.gameObject);
     }
 }
示例#2
0
        public StarFieldTracker(List <TrackedObjectConfig> measuringStars)
        {
            int i = -1;

            foreach (var originalObject in measuringStars)
            {
                i++;
                TrackedObject trackedObject = new TrackedObject((byte)i, originalObject);
                TrackedObjects.Add(trackedObject);
                TrackedObjectsByTargetId.Add(trackedObject.TargetNo, trackedObject);
            }
        }
示例#3
0
        /// <summary>
        /// Function to create an 2D specific effect object.
        /// </summary>
        /// <typeparam name="T">Type of effect to create.</typeparam>
        /// <param name="name">Name of the effect.</param>
        /// <param name="parameters">Parameters used to initialize the effect.</param>
        /// <returns>The new effect object.</returns>
        /// <remarks>Effects are used to simplify rendering with multiple passes when using a shader.</remarks>
        /// <exception cref="System.ArgumentNullException">Thrown when the <paramref name="name"/> parameter is NULL (Nothing in VB.Net).</exception>
        /// <exception cref="System.ArgumentException">Thrown when the name parameter is an empty string.</exception>
        public T Create2DEffect <T>(string name, params GorgonEffectParameter[] parameters)
            where T : Gorgon2DEffect
        {
            var effectParameters = new GorgonEffectParameter[parameters == null ? 1 : parameters.Length + 1];

            effectParameters[0] = new GorgonEffectParameter("Gorgon2D", this);

            if (parameters == null)
            {
                return(Graphics.ImmediateContext.Shaders.CreateEffect <T>(name, effectParameters));
            }

            for (int i = 0; i < parameters.Length; i++)
            {
                effectParameters[i + 1] = parameters[i];
            }

            var result = Graphics.ImmediateContext.Shaders.CreateEffect <T>(name, effectParameters);

            TrackedObjects.Add(result);

            return(result);
        }
        public MainViewModel(IMainModel model, ICttObjectTrackingService cttObjectTrackingService, INavigationService navigationService, ISystemTrayService systemTrayService, IMessageBoxService messageBoxService, IClipboardService clipboardService, IEmailComposeService emailComposeService, ISmsComposeService smsComposeService)
        {
            _model = model;
            _cttObjectTrackingService = cttObjectTrackingService;
            _navigationService        = navigationService;
            _systemTrayService        = systemTrayService;
            _messageBoxService        = messageBoxService;
            _clipboardService         = clipboardService;
            _emailComposeService      = emailComposeService;
            _smsComposeService        = smsComposeService;

            TrackedObjects = _model.TrackedObjects
                             .Select(x => new ObjectDetailsViewModel(x))
                             .ToObservableCollection();

            ShowObjectDetailsCommand = new RelayCommand <ObjectDetailsViewModel>(item =>
            {
                var objectId = item.Model.ObjectId;

                _navigationService.NavigateTo(new Uri("/View/ObjectDetailsPage.xaml?" + objectId, UriKind.Relative));
            });

            NewObjectCommand = new RelayCommand(() =>
            {
                _navigationService.NavigateTo(new Uri("/View/NewObjectPage.xaml", UriKind.Relative));
            }, () => !IsBusy);

            EnableSelectionCommand = new RelayCommand(() =>
            {
                IsSelectionEnabled = true;
            }, () => !IsTrackedObjectsEmpty && !IsBusy);

            RefreshCommand = new RelayCommand(() =>
            {
                var enumerator = TrackedObjects.GetEnumerator();

                RefreshNext(enumerator);
            }, () => !IsTrackedObjectsEmpty && !IsBusy);

            DeleteObjectsCommand = new RelayCommand <IList>(items =>
            {
                if (items == null || items.Count == 0)
                {
                    return;
                }

                _messageBoxService.Show("Está prestes a apagar os objectos seleccionados", "Tem a certeza?", new string[] { "eliminar", "cancelar" }, button =>
                {
                    if (button != 0)
                    {
                        return;
                    }

                    var itemsToRemove = items
                                        .Cast <ObjectDetailsViewModel>()
                                        .ToArray();

                    foreach (var item in itemsToRemove)
                    {
                        _model.TrackedObjects.Remove(item.Model);

                        TrackedObjects.Remove(item);
                    }

                    IsTrackedObjectsEmpty = (TrackedObjects.Count == 0);

                    _model.Save();
                });
            }, items => !IsBusy);

            ShowAboutCommand = new RelayCommand(() =>
            {
                _navigationService.NavigateTo(new Uri("/View/AboutPage.xaml", UriKind.Relative));
            });

            BackKeyPressCommand = new RelayCommand <CancelEventArgs>(e =>
            {
                if (IsSelectionEnabled)
                {
                    IsSelectionEnabled = false;

                    e.Cancel = true;
                }
            });

            CopyCodeCommand = new RelayCommand <ObjectDetailsViewModel>(item =>
            {
                _clipboardService.SetText(item.Model.ObjectId);
            });

            MailCodeCommand = new RelayCommand <ObjectDetailsViewModel>(item =>
            {
                _emailComposeService.Show("CTT Objectos", string.Format("\nO seu código de tracking: {0}\n\nPode consultar o estado entrando em http://www.ctt.pt e utilizando a opção \"Pesquisa de Objectos\".\n\nEnviado por CTT Objectos (http://bit.ly/cttobjectos)", item.Model.ObjectId));
            });

            TextCodeCommand = new RelayCommand <ObjectDetailsViewModel>(item =>
            {
                _smsComposeService.Show(string.Empty, item.Model.ObjectId);
            });

            MessengerInstance.Register <AddObjectMessage>(this, message =>
            {
                var objectViewModel = TrackedObjects.FirstOrDefault(x => x.Model.ObjectId == message.Model.ObjectId);

                if (objectViewModel == null)
                {
                    var objectModel = new ObjectModel(message.Description, message.ETag, message.Model);

                    _model.TrackedObjects.Add(objectModel);

                    TrackedObjects.Add(new ObjectDetailsViewModel(objectModel));

                    IsTrackedObjectsEmpty = false;
                }
                else
                {
                    objectViewModel.Model.Description = message.Description;
                    objectViewModel.Model.State       = message.Model;
                }

                _model.Save();
            });

            IsTrackedObjectsEmpty = (TrackedObjects.Count == 0);
        }