Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Есть замечания по реализации:
- Апдейт каждого значения рядка в апдейте, не самая лучшая идея. Их может быть много да и нет необходимости делать это каждый апдейт.
- private void Update()
- {
- if (this.activityPlayListPlayer == null)
- {
- return;
- }
- this.index.color = (this.activityPlayListPlayer.WillPlay(element, _index) || (activityPlayListPlayer.CurrentSessionElement == element && activityPlayListPlayer.CurrentRepeat == _index)) ? Color.red : Color.black;
- var res = regestry.GetResult(this.element, _index);
- if (res != null && res.Count > 0)
- {
- foreach (var item in res)
- {
- if (createdCells.TryGetValue(item.Key, out GameObject cell))
- {
- var cellText = cell.GetComponentInChildren<Text>();
- cellText.text = item.Value.ToString("00.00");
- }
- }
- }
- else
- {
- foreach (var item in createdCells)
- {
- item.Value.GetComponentInChildren<Text>().text = " - ";
- }
- }
- if (activityPlayListPlayer.CurrentRepeat == this._index && this.element == activityPlayListPlayer.CurrentSessionElement)
- {
- buttonImage.sprite = playingSprite;
- progressImage.fillAmount = (Time.time - activityPlayListPlayer.StartRepeatTime) / this.element.IterationDuration;
- }
- else
- {
- buttonImage.sprite = this.notPlayingSprite;
- progressImage.fillAmount = 0;
- }
- if (activityPlayListPlayer.IsPause)
- {
- buttonImage.sprite = this.notPlayingSprite;
- progressImage.fillAmount = 0;
- }
- }
- if (CurrentSessionElement != null && !IsPause)
- {
- if ((Time.time - StartRepeatTime) > CurrentSessionElement.IterationDuration)
- {
- PlayNext();
- }
- }
- ----------------------------------------------------------------------
- Из пейста выше:
- cellText.text = item.Value.ToString("00.00"); - формат один, а на самом деле у каждого значения свои форматы. Предоставляются через activity.OutputFormats
- Может быть "32.22m", может быть например "0.123*" итд.
- ----------------------------------------------------------------------
- ActivityPlayListPlayer:
- if ((Time.time - StartRepeatTime) > CurrentSessionElement.IterationDuration)
- {
- PlayNext();
- }
- Ты ориентируешься по своему счетчику времени и убиваешь активити когда считаешь что оно завершено. Это не верно по отношению к архитектуре. Дожидайся завершения активити и убивай его только тогда когда ты хочешь сделать стоп, а не считаешь что оно должно закончиться. Я подменю расчет времени активити что бы оно соответствовало указанному.
- ----------------------------------------------------------------------
- ActivityPlayer. Ты добавил сущность ActivityData единственным отличием которого от PlayingInfo является наличие стартового времени. Не плоди сущности, добавь нужное поле в плейинг инфо. Сейчас стейт размазывается между двумя не связными вещами.
- Так же поле: currentActvityData не несет в данной реализации никакой полезной нагрузки так как есть проперти с PlayingInfo
- ----------------------------------------------------------------------
- ActivityPlayer:
- Observable.EveryUpdate().Subscribe(_ =>
- {
- if (info.Value != null && currentActvityData.Activity!=null)
- onActivityUpdated.Execute(currentActvityData);
- }).AddTo(disposable);
- в комбинации с MeasurementRegestry и его подпиской дает апдейт каждый кадр зарегестрированых значений, что тоже не то что бы необходимо делать каждый фрейм.
Add Comment
Please, Sign In to add comment