/// <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); } }
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); } }
/// <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); }