private async void SavePositionUpdateTextBox_ClickAsync(object sender, RoutedEventArgs e)
        {
            EditPositionProgressRing.IsActive = true;

            if (await NeptuneDatabase.UpdatePositionRecordAsync(AppShell.Workers.First(x => x.Id == AppShell._loggedInUserId), position, Convert.ToDecimal(PositionSalaryTextBox.Text)))
            {
                AppShell.Positions.First(x => x.Id == position.Id).Salary = position.Salary = Convert.ToDecimal(PositionSalaryTextBox.Text);
                OnPositionUpdated?.Invoke(AppShell.Workers.First(x => x.Id == AppShell._loggedInUserId), position, Convert.ToDecimal(PositionSalaryTextBox.Text));
                EditPositionSalaryContentDialog.Hide();
            }

            EditPositionProgressRing.IsActive = false;
        }
        public void Update(bool newTick)
        {
            foreach (CameraComponent camera in Cameras)
            {
                // Control camera position in real game time
                Vector3 position = camera.transform.position;
                if (camera.Velocity.sqrMagnitude != 0)
                {
                    camera.transform.position = position + camera.Velocity * Time.deltaTime;
                }

                // Send updated camera position to simulation every tick
                if (newTick && camera.LastTickPosition != position)
                {
                    camera.LastTickPosition = position;
                    OnPositionUpdated?.Invoke(new PositionUpdatedEvent(position));
                }
            }
        }
    public void SetParent(DisplayableEntityModel model, bool stayWorldPosition = true)
    {
        if (stayWorldPosition)
        {
            Vector3 deltaPos = this.position - (model != null ? model.position : Vector3.zero);
            this.localPosition = deltaPos;

            Quaternion deltaRot = (model != null ? Quaternion.Inverse(model.rotation) : Quaternion.identity) * this.rotation;
            this.localRotation = deltaRot;

            Vector3 deltaScale = this.lossyScale.Divide(model != null ? model.lossyScale : Vector3.one);
            this.localScale = deltaScale;
        }

        m_parent = model;
        model?.childrenList.Add(this);

        OnPositionUpdated?.Invoke(position); // Modify the parent may changed the global position, so invoke the event
        OnParentUpdated?.Invoke(model);
    }
Beispiel #4
0
        public void Compare(double[] noteBins)
        {
            DateTime   now        = DateTime.Now;
            List <int> heardNotes = new List <int>();

            for (int i = 0; i < noteBins.Length; i++)
            {
                if (noteBins[i] > 0.01)
                {
                    heardNotes.Add(i);
                }
            }

            var timeSpanMs = (now - LastSuccessfulRecognition).TotalMilliseconds;
            var delayMs    = MinimumDelay.TotalMilliseconds;

            for (int i = 1; i < MaximumPositionSkip && i + CurrentPosition < Tab.Count; i++)
            {
                if (timeSpanMs < delayMs * i)
                {
                    return;
                }
                StringRelatedChord possibleCurrentChord = TabWithBackground[CurrentPosition + i];
                int missing, wrong;
                (missing, wrong) =
                    StringRelatedChord.CalculateDiff(possibleCurrentChord, Tab[CurrentPosition + i], heardNotes);
                int notesCount = Tab[CurrentPosition + i].GetFretsCount();
                int maximumMissing = (int)Math.Round(notesCount * this.MaximumMissingNotesFraction);
                if (missing <= maximumMissing && wrong <= MaximumWrongNotes)
                {
                    CurrentPosition          += i;
                    LastSuccessfulRecognition = DateTime.Now;
                    OnPositionUpdated?.Invoke(CurrentPosition);
                    return;
                }
            }
        }
Beispiel #5
0
        private void UpdatePosition(PBPosition rsp)
        {
            lock (PositionVMCollection)
            {
                PositionVM positionVM = PositionVMCollection.FirstOrDefault(p =>
                                                                            p.Contract == rsp.Contract && (int)p.Direction == rsp.Direction && p.Portfolio == rsp.Portfolio);

                if (rsp.TdPosition == 0 && rsp.YdPosition == 0)
                {
                    if (positionVM != null)
                    {
                        PositionVMCollection.Remove(positionVM);
                    }

                    if (!PositionVMCollection.Any(p => p.Contract == rsp.Contract))
                    {
                        PositionContractSet.Remove(rsp.Contract);
                    }
                }
                else
                {
                    if (positionVM == null)
                    {
                        var contractInfo = ClientDbContext.FindContract(rsp.Contract);
                        positionVM = new PositionVM
                        {
                            Contract         = rsp.Contract,
                            Exchange         = rsp.Exchange,
                            Portfolio        = rsp.Portfolio,
                            Direction        = (PositionDirectionType)rsp.Direction,
                            HedgeFlag        = (HedgeType)rsp.HedgeFlag,
                            PositionDateFlag = (PositionDateFlagType)rsp.PositionDateFlag,
                            Multiplier       = contractInfo == null ? 1 : contractInfo.VolumeMultiple,
                            TodayPosition    = rsp.TdPosition,
                            YdPosition       = rsp.YdPosition,
                            OpenVolume       = rsp.OpenVolume,
                            CloseVolume      = rsp.CloseVolume,
                            OpenAmount       = rsp.OpenAmount,
                            CloseAmount      = rsp.CloseAmount,
                            TdCost           = rsp.TdCost,
                            YdCost           = rsp.YdCost,
                            OpenCost         = rsp.OpenCost,
                            Profit           = rsp.Profit,
                            CloseProfit      = rsp.CloseProfit,
                            UseMargin        = rsp.UseMargin,
                        };

                        PositionVMCollection.Add(positionVM);
                        PositionContractSet.Add(rsp.Contract);

                        OnPositionUpdated?.Invoke(positionVM);
                    }
                    else
                    {
                        positionVM.OpenVolume  = rsp.OpenVolume;
                        positionVM.CloseVolume = rsp.CloseVolume;
                        positionVM.OpenAmount  = rsp.OpenAmount;
                        positionVM.CloseAmount = rsp.CloseAmount;
                        positionVM.OpenCost    = rsp.OpenCost;

                        if (positionVM.YdPosition != rsp.YdPosition || positionVM.TodayPosition != rsp.TdPosition)
                        {
                            positionVM.TodayPosition = rsp.TdPosition;
                            positionVM.YdPosition    = rsp.YdPosition;
                            OnPositionUpdated?.Invoke(positionVM);
                        }
                    }
                }
            }
        }
Beispiel #6
0
 public void ManuallyChangePosition(int position)
 {
     this.CurrentPosition      = position;
     LastSuccessfulRecognition = DateTime.Now;
     OnPositionUpdated?.Invoke(CurrentPosition);
 }