Beispiel #1
0
        private void AddInfo(SortedList <double, ArrayList> timingInfos, TimingInfo newInfo)
        {
            if (!timingInfos.ContainsKey(newInfo.Fps))
            {
                timingInfos.Add(newInfo.Fps, new ArrayList());
            }

            bool found = false;

            foreach (TimingInfo info in timingInfos[newInfo.Fps])
            {
                if (info.T1Value == newInfo.T1Value && info.T2Value == newInfo.T2Value)
                {
                    found = true;
                }
                if (info.T2Value == newInfo.T1Value && info.T1Value == newInfo.T2Value)
                {
                    //found = true;
                }
            }

            if (!found)
            {
                timingInfos[newInfo.Fps].Add(newInfo);
            }
        }
        private void AddInfo(SortedList<double, ArrayList> timingInfos, TimingInfo newInfo)
        {
            if (!timingInfos.ContainsKey(newInfo.Fps))
            {
                timingInfos.Add(newInfo.Fps, new ArrayList());
            }

            bool found = false;
            foreach (TimingInfo info in timingInfos[newInfo.Fps])
            {
                if (info.T1Value == newInfo.T1Value && info.T2Value == newInfo.T2Value)
                {
                    found = true;
                }
                if (info.T2Value == newInfo.T1Value && info.T1Value == newInfo.T2Value)
                {
                    //found = true;
                }
            }

            if (!found)
            {
                timingInfos[newInfo.Fps].Add(newInfo);
            }
        }
        public static T MultiplyAll <T>(ICommunicator comm, T value)
            where T : ICloneable, SettableToProduct <T>
        {
            string     key = StringUtil.TypeToString(typeof(T));
            TimingInfo timingInfo;

            lock (MultiplyAllTimingInfos)
            {
                if (!MultiplyAllTimingInfos.TryGetValue(key, out timingInfo))
                {
                    timingInfo = new TimingInfo();
                    MultiplyAllTimingInfos.Add(key, timingInfo);
                }
            }
            timingInfo.watch.Start();
            var reduced = comm.Allreduce(value, (a, b) =>
            {
                T result = (T)a.Clone();
                result.SetToProduct(a, b);
                return(result);
            });

            timingInfo.watch.Stop();
            timingInfo.ItemsTransmitted++;
            return(reduced);
        }
Beispiel #4
0
        public override void Update(TimingInfo timingInfo)
        {
            float deltaTime = (float)timingInfo.ElapsedTime.TotalSeconds;

            foreach (var transform in TransformComponentManager.Instance.Components)
            {
                if (transform.Velocity.LengthSquared() == 0f)
                {
                    continue;
                }

                if (transform.Velocity.Y < 0.5f && transform.Velocity.Y > -0.5f)
                {
                    transform.Velocity *= Vector2.UnitX;
                }

                if (transform.Velocity.X < 0.5f && transform.Velocity.X > -0.5f)
                {
                    transform.Velocity *= Vector2.UnitY;
                }

                var position = transform.Velocity * deltaTime;
                if (transform.Position == position)
                {
                    continue;
                }

                transform.Position += position;
            }
        }
Beispiel #5
0
        private void button_BianJi1_Click(object sender, RoutedEventArgs e)
        {
            Button vButton = (Button)sender;
            int    vZhuHao = Convert.ToInt32(vButton.Tag);

            m_EditZhuHao = vZhuHao;

            label_DS_Title.Content = string.Format("定时参数(第{0}组)", vZhuHao + 1);

            Label      vLabel_DS_CZ = (Label)FindName(string.Format("label_DS_CZ{0}", m_EditZhuHao));
            TimingInfo vTimingInfo  = m_TimingInfoList.Where(m => m.LuHao == m_LuHao && m.ZhuHao == m_EditZhuHao).FirstOrDefault();

            if (vTimingInfo != null && vTimingInfo.DianYuanID != null && vTimingInfo.DianYuanID != "")
            {
                //vWeek = (byte)(timingInfo.TimeData >> 16);
                //vHour = (byte)(timingInfo.TimeData >> 8);
                //vMinute = (byte)(timingInfo.TimeData >> 0);
                //vLabel_DS_SJ.Content = string.Format("周{0} {1}:{2}", vWeek, vHour, vMinute);
                byte vWeek, vHour, vMinute, vDay;
                switch (vTimingInfo.ZhouQi)
                {
                case 0:
                    comboBox_ZQ.Text = "单次";
                    DateTime vDateTime = CommHelper.TimestampToDateTime(vTimingInfo.TimeData);
                    m_DatePicker.SelectedDate = vDateTime;
                    timePicker_Time.Value     = vDateTime;
                    break;

                case 1:
                    comboBox_ZQ.Text      = "每天";
                    vHour                 = (byte)(vTimingInfo.TimeData >> 8);
                    vMinute               = (byte)(vTimingInfo.TimeData >> 0);
                    timePicker_Time.Value = new DateTime(1970, 1, 1, vHour, vMinute, 0);
                    break;

                case 2:
                    vWeek   = (byte)(vTimingInfo.TimeData >> 16);
                    vHour   = (byte)(vTimingInfo.TimeData >> 8);
                    vMinute = (byte)(vTimingInfo.TimeData >> 0);
                    //byte vWeek = (byte)(vTimingInfo.TimeData >> 16);
                    m_ComboBox.Text       = string.Format("周{0}", convertWeekStr(vWeek));
                    comboBox_ZQ.Text      = "每周";
                    timePicker_Time.Value = new DateTime(1970, 1, 1, vHour, vMinute, 0);
                    break;

                case 3:
                    vDay    = (byte)(vTimingInfo.TimeData >> 16);
                    vHour   = (byte)(vTimingInfo.TimeData >> 8);
                    vMinute = (byte)(vTimingInfo.TimeData >> 0);
                    m_IntegerUpDown.Value = vDay;
                    comboBox_ZQ.Text      = "每月";
                    timePicker_Time.Value = new DateTime(1970, 1, 1, vHour, vMinute, 0);
                    break;
                }
                //timePicker_Time.Value = vDateTime;
                CheckBox_ChaoZhuo.IsChecked = vTimingInfo.RenWuLX == 0 ? false : true;
                CheckBox_YunXuKZ.IsChecked  = vTimingInfo.YunXuKZ == 0 ? false : true;
            }
        }
Beispiel #6
0
        public override void ApplyDefaults(TimingInfo timing, BeatmapDifficulty difficulty)
        {
            base.ApplyDefaults(timing, difficulty);

            double spinnerRotationRatio = BeatmapDifficulty.DifficultyRange(difficulty.OverallDifficulty, 3, 5, 7.5);

            RequiredHits = (int)Math.Max(1, Duration / 1000f * spinnerRotationRatio * HitRatio);
        }
Beispiel #7
0
        public override void ApplyDefaults(TimingInfo timing, BeatmapDifficulty difficulty)
        {
            base.ApplyDefaults(timing, difficulty);

            HitWindowGreat = BeatmapDifficulty.DifficultyRange(difficulty.OverallDifficulty, 50, 35, 20);
            HitWindowGood  = BeatmapDifficulty.DifficultyRange(difficulty.OverallDifficulty, 120, 80, 50);
            HitWindowMiss  = BeatmapDifficulty.DifficultyRange(difficulty.OverallDifficulty, 135, 95, 70);
        }
        public void TestSerialization()
        {
            var sut = new TimingInfo();

            JsonHelper.GetSerializedKeys(sut).Should().BeEquivalentTo(new SortedSet <string> {
                "start_time", "end_time", "process_time"
            });
        }
Beispiel #9
0
        public override void ApplyDefaults(TimingInfo timing, BeatmapDifficulty difficulty)
        {
            base.ApplyDefaults(timing, difficulty);

            tickSpacing = timing.BeatLengthAt(StartTime) / TickRate;

            RequiredGoodHits  = TotalTicks * Math.Min(0.15, 0.05 + 0.10 / 6 * difficulty.OverallDifficulty);
            RequiredGreatHits = TotalTicks * Math.Min(0.30, 0.10 + 0.20 / 6 * difficulty.OverallDifficulty);
        }
Beispiel #10
0
        public override void Update(TimingInfo timingInfo)
        {
            var playerGameObjects = PlayerComponentManager.Instance.Components.Select(c => c.GameObject);

            playerGameObjects.ForEach(playerGameObject =>
            {
                UpdatePlayerGameObject(playerGameObject, timingInfo.ElapsedTime);
            });
        }
Beispiel #11
0
        public override void ApplyDefaults(TimingInfo timing, BeatmapDifficulty difficulty)
        {
            base.ApplyDefaults(timing, difficulty);

            double scoringDistance = base_scoring_distance * difficulty.SliderMultiplier / timing.SpeedMultiplierAt(StartTime);

            Velocity     = scoringDistance / timing.BeatLengthAt(StartTime);
            TickDistance = scoringDistance / difficulty.SliderTickRate;
        }
Beispiel #12
0
        private void btnGenerate_Click(object sender, EventArgs e)
        {
            ulong  baseFreq   = 0;
            double fps        = 0;
            ulong  maxResults = 0;
            SortedList <double, ArrayList> timingInfos = new SortedList <double, ArrayList>();

            timingInfos.Clear();

            if (!double.TryParse(txtFps.Text, out fps))
            {
                return;
            }

            if (!ulong.TryParse(txtBaseFreq.Text, out baseFreq))
            {
                return;
            }

            if (!ulong.TryParse(txtResults.Text, out maxResults))
            {
                return;
            }

            double clock = (double)baseFreq / fps;
            uint   t1Min = SelectedModel.T1min;
            uint   t1Max = SelectedModel.T1max;
            uint   t2Min = SelectedModel.T2min;
            uint   t2Max = SelectedModel.T2max;

            for (uint t1 = t1Min; t1 <= t1Max; t1++)
            {
                uint t2_a = (uint)Math.Floor(clock / (double)t1);
                uint t2_b = (uint)Math.Ceiling(clock / (double)t1);

                if ((t2_a > t2Min && t2_a < t2Max) && (t2_b > t2Min && t2_b < t2Max))
                {
                    double exactFps_a = Math.Round((double)baseFreq / t1 / t2_a, 9);
                    double exactFps_b = Math.Round((double)baseFreq / t1 / t2_b, 9);

                    if ((Math.Abs(exactFps_a - fps) < MaxDelta) && (Math.Abs(exactFps_b - fps) < MaxDelta))
                    {
                        TimingInfo info_a = new TimingInfo(t1, t2_a, exactFps_a);
                        TimingInfo info_b = new TimingInfo(t1, t2_b, exactFps_b);

                        AddInfo(timingInfos, info_a);
                        AddInfo(timingInfos, info_b);
                    }
                }
            }

            double[] filtered = FilterEntries(timingInfos, fps, maxResults);
            DisplayResults(timingInfos, filtered);

            return;
        }
Beispiel #13
0
        public void WriteValue(IBufferWriter <byte> stream, TimingInfo value)
        {
            if (value == null)
            {
                throw new SerializationException("Timing must have value");
            }

            var field = $"t={value.StartTime} {value.StopTime}{SDPSerializer.CRLF}";

            stream.WriteString(field);
        }
Beispiel #14
0
        void bindTimingInfo(TimingInfo timingInfo, int zhuHao)
        {
            if (timingInfo != null && timingInfo.DianYuanID != null && timingInfo.DianYuanID != "")
            {
                Label vLabel_DS_CZ = (Label)FindName(string.Format("label_DS_CZ{0}", zhuHao));
                Label vLabel_DS_ZQ = (Label)FindName(string.Format("label_DS_ZQ{0}", zhuHao));
                Label vLabel_DS_SJ = (Label)FindName(string.Format("label_DS_SJ{0}", zhuHao));
                //操作
                if (timingInfo.RenWuLX == 0x00)
                {
                    vLabel_DS_CZ.Content    = "关";
                    vLabel_DS_CZ.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#EA3B3A"));
                }
                else
                {
                    vLabel_DS_CZ.Content    = "开";
                    vLabel_DS_CZ.Foreground = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#1BA261"));
                }
                byte vWeek, vHour, vMinute, vDay;
                switch (timingInfo.ZhouQi)
                {
                case 0:
                    //vLabel_DS_ZQ.Content = "单次";
                    vLabel_DS_SJ.Content = CommHelper.TimestampToDateTime(timingInfo.TimeData).ToString("yyyy-MM-dd HH:mm:ss");
                    break;

                case 1:
                    //vLabel_DS_ZQ.Content = "每天";
                    vHour   = (byte)(timingInfo.TimeData >> 8);
                    vMinute = (byte)(timingInfo.TimeData >> 0);
                    vLabel_DS_SJ.Content = string.Format("{0}:{1}", vHour, vMinute);
                    break;

                case 2:
                    //vLabel_DS_ZQ.Content = "每周";
                    vWeek   = (byte)(timingInfo.TimeData >> 16);
                    vHour   = (byte)(timingInfo.TimeData >> 8);
                    vMinute = (byte)(timingInfo.TimeData >> 0);
                    vLabel_DS_SJ.Content = string.Format("周{0} {1}:{2}", vWeek, vHour, vMinute);
                    break;

                case 3:
                    //vLabel_DS_ZQ.Content = "每月";
                    vDay    = (byte)(timingInfo.TimeData >> 16);
                    vHour   = (byte)(timingInfo.TimeData >> 8);
                    vMinute = (byte)(timingInfo.TimeData >> 0);
                    vLabel_DS_SJ.Content = string.Format("{0}日 {1}:{2}", vDay, vHour, vMinute);
                    break;
                }
                vLabel_DS_ZQ.Content        = m_PowerMonitoring.ConvertTimingZQToStr(timingInfo.ZhouQi);
                CheckBox_ChaoZhuo.IsChecked = timingInfo.RenWuLX == 0x01 ? true : false;
                CheckBox_YunXuKZ.IsChecked  = timingInfo.YunXuKZ == 0x01 ? true : false;
            }
        }
Beispiel #15
0
        public override void ApplyDefaults(TimingInfo timing, BeatmapDifficulty difficulty)
        {
            base.ApplyDefaults(timing, difficulty);

            ControlPoint overridePoint;
            ControlPoint timingPoint        = timing.TimingPointAt(StartTime, out overridePoint);
            var          velocityAdjustment = overridePoint?.VelocityAdjustment ?? 1;
            var          baseVelocity       = 100 * difficulty.SliderMultiplier / velocityAdjustment;

            Velocity     = baseVelocity / timingPoint.BeatLength;
            TickDistance = baseVelocity / difficulty.SliderTickRate;
        }
Beispiel #16
0
        public void TimingInfo()
        {
            int msBudgetPerStep = 300;

            for (int steps = 2; steps < 5; steps++)
            {
                Console.WriteLine("Begin with steps=" + steps);
                Clock.TimeOverrideFunction = () => new DateTime();
                int        msBudget = msBudgetPerStep * (steps + 1);
                TimingInfo ifo      = new TimingInfo(new BaseDB.TimingContainer()
                {
                    startTime = Clock.Now.ToString(), msGenerationBudget = msBudget, msApplication = 100, msComputation = 100, recoverySteps = steps
                });

                var computeEnd       = ifo.NextMainComputationDeadline.ToTotalMilliseconds();
                var applicationBegin = ifo.NextMainApplicationDeadline.ToTotalMilliseconds();

                Assert.AreEqual(computeEnd, 100);
                Assert.AreEqual(applicationBegin, msBudget - msBudgetPerStep - 100);

                int totalSteps = (steps + 1);
                for (int i = 0; i < totalSteps * 3; i++)
                {
                    Assert.AreEqual(ifo.IsMainStep(i), (i % totalSteps) == 0);
                    if (!ifo.IsMainStep(i))
                    {
                        var begin = ifo.GetRecoveryStepStart(i);
                        var apply = ifo.GetRecoveryStepApplicationDeadline(i) - ifo.Start;
                        Assert.AreEqual((apply - begin).TotalMilliseconds, 200);
                        int local;
                        var s0 = ifo.GetAbsoluteRecoveryStepIndex(begin, out local);
                        Assert.AreEqual(s0, i);
                        var s1 = ifo.GetAbsoluteRecoveryStepIndex(begin + TimeSpan.FromMilliseconds(1), out local);
                        Assert.AreEqual(s1, i);
                    }
                }


                for (int m = 0; m < msBudget * 3; m++)
                {
                    int local;
                    var s = ifo.GetAbsoluteRecoveryStepIndex(TimeSpan.FromMilliseconds(m), out local);
                    if (ifo.IsMainStep(s))
                    {
                        continue;
                    }
                    var begin = ifo.GetRecoveryStepStart(s);
                    Assert.IsTrue(m >= begin.TotalMilliseconds);
                    Assert.IsTrue(m <= (begin + ifo.RecoveryStepTimeWindow).TotalMilliseconds);
                }
            }
        }
Beispiel #17
0
        public void CanDeSerialize()
        {
            var field  = $"t=3034423619 3042462419".ToByteArray();
            var result = TimingSerializer.Instance.ReadValue(field);

            var expected = new TimingInfo()
            {
                StartTime = 3034423619,
                StopTime  = 3042462419
            };

            Assert.True(CheckIfAreSame(expected, result));
        }
Beispiel #18
0
        /// <summary>
        /// Applies default values to this HitObject.
        /// </summary>
        /// <param name="difficulty">The difficulty settings to use.</param>
        /// <param name="timing">The timing settings to use.</param>
        public virtual void ApplyDefaults(TimingInfo timing, BeatmapDifficulty difficulty)
        {
            ControlPoint overridePoint;
            ControlPoint timingPoint = timing.TimingPointAt(StartTime, out overridePoint);

            ControlPoint samplePoint = overridePoint ?? timingPoint;

            // Initialize first sample
            Samples.ForEach(s => initializeSampleInfo(s, samplePoint));

            // Initialize any repeat samples
            var repeatData = this as IHasRepeats;

            repeatData?.RepeatSamples?.ForEach(r => r.ForEach(s => initializeSampleInfo(s, samplePoint)));
        }
Beispiel #19
0
 public override void Update(TimingInfo timingInfo)
 {
     GameObjectManager.GameObjects
     .Select(gameObject => gameObject.GetComponents <DustParticleEmitterComponent, TransformComponent>())
     .Where(result => result != default)
     .ToArray()     // clone
     .ForEach(result =>
     {
         CreateParticles(result.Item1, result.Item2, timingInfo.TotalTime);
         if (result.Item1.ParticleEmitterType == ParticleEmitterType.Burst)
         {
             result.Item1.GameObject.RemoveComponent <DustParticleEmitterComponent>();
         }
     });
 }
Beispiel #20
0
        public override void ApplyDefaults(TimingInfo timing, BeatmapDifficulty difficulty)
        {
            base.ApplyDefaults(timing, difficulty);

            PreEmpt = 600 / (timing.SliderVelocityAt(StartTime) * difficulty.SliderMultiplier) * 1000;

            ControlPoint overridePoint;

            Kiai = timing.TimingPointAt(StartTime, out overridePoint).KiaiMode;

            if (overridePoint != null)
            {
                Kiai |= overridePoint.KiaiMode;
            }
        }
Beispiel #21
0
        public void Update(TimingInfo timingInfo)
        {
            _inputSystem.Update(timingInfo);
            _graphicsSystem.Update(timingInfo);
            _playerSystem.Update(timingInfo);
            _particleSystem.Update(timingInfo);
            _physicsSystem.Update(timingInfo);
            _colliderSystem.Update(timingInfo);
            _dustParticleEmitterSystem.Update(timingInfo);
            _particleEmitterSystem.Update(timingInfo);

            // If we still have collisions, resolve them now!
            _colliderSystem.ResolveCollisions(timingInfo);
            _moveSystem.Update(timingInfo);
        }
Beispiel #22
0
        public override void ApplyDefaults(TimingInfo timing, BeatmapDifficulty difficulty)
        {
            base.ApplyDefaults(timing, difficulty);

            ScrollTime = scroll_time * (timing.BeatLengthAt(StartTime) * timing.SpeedMultiplierAt(StartTime) / 1000) / difficulty.SliderMultiplier;

            ControlPoint overridePoint;

            Kiai = timing.TimingPointAt(StartTime, out overridePoint).KiaiMode;

            if (overridePoint != null)
            {
                Kiai |= overridePoint.KiaiMode;
            }
        }
Beispiel #23
0
        private void DumpTimings(ResultEntry result)
        {
            StringBuilder builder = new StringBuilder();

            TimingInfo[] infos = result.Timings;

            lstTimerValues.Items.Clear();
            btnWriteConfig.Enabled = false;

            foreach (TimingInfo info in infos)
            {
                TimingInfo infoTimers = new TimingInfo(info);
                infoTimers.ShowTimers = true;
                lstTimerValues.Items.Add(infoTimers);
            }
        }
        //----< indirectly used by child receive thread to post results >----

        public void postRcvMsg(TimingInfo content)
        {
            string        s1 = "The average latency of the reader client : " + content.rClientLatency + " sec";
            string        s2 = "The average latency of the writer client : " + content.wClientLatency + " sec";
            string        s3 = "The server throughput is                 : " + content.srvrThroughput + " messages per second";
            StringBuilder sb = new StringBuilder();

            sb.AppendLine(s1);
            sb.AppendLine(s2);
            sb.AppendLine(s3);
            TextBlock item = new TextBlock();

            item.Text     = trim(sb.ToString());
            item.FontSize = 16;
            rcvmsgs.Items.Clear();
            rcvmsgs.Items.Insert(0, item);
        }
Beispiel #25
0
        public async Task CanSerialize()
        {
            var expected = $"t=3034423619 3042462419{SDPLib.SDPSerializer.CRLF}".ToByteArray();

            var pipe  = new Pipe();
            var value = new TimingInfo()
            {
                StartTime = 3034423619,
                StopTime  = 3042462419
            };

            TimingSerializer.Instance.WriteValue(pipe.Writer, value);
            pipe.Writer.Complete();

            var serialized = (await pipe.Reader.ReadAsync()).Buffer.ToArray();

            Assert.Equal(expected, serialized);
        }
Beispiel #26
0
        public override void ApplyDefaults(TimingInfo timing, BeatmapDifficulty difficulty)
        {
            base.ApplyDefaults(timing, difficulty);

            PreEmpt = 600 / (timing.SliderVelocityAt(StartTime) * difficulty.SliderMultiplier) * 1000;

            ControlPoint overridePoint;

            Kiai = timing.TimingPointAt(StartTime, out overridePoint).KiaiMode;

            if (overridePoint != null)
            {
                Kiai |= overridePoint.KiaiMode;
            }

            HitWindowGreat = BeatmapDifficulty.DifficultyRange(difficulty.OverallDifficulty, 50, 35, 20);
            HitWindowGood  = BeatmapDifficulty.DifficultyRange(difficulty.OverallDifficulty, 120, 80, 50);
            HitWindowMiss  = BeatmapDifficulty.DifficultyRange(difficulty.OverallDifficulty, 135, 95, 70);
        }
Beispiel #27
0
        public override void ApplyDefaults(TimingInfo timing, BeatmapDifficulty difficulty)
        {
            base.ApplyDefaults(timing, difficulty);

            Velocity         = timing.SliderVelocityAt(StartTime) * difficulty.SliderMultiplier / 1000;
            TickTimeDistance = timing.BeatLengthAt(StartTime);

            //TODO: move this to legacy conversion code to allow for direct division without special case.
            if (difficulty.SliderTickRate == 3)
            {
                TickTimeDistance /= 3;
            }
            else
            {
                TickTimeDistance /= 4;
            }

            RequiredGoodHits  = TotalTicks * Math.Min(0.15, 0.05 + 0.10 / 6 * difficulty.OverallDifficulty);
            RequiredGreatHits = TotalTicks * Math.Min(0.30, 0.10 + 0.20 / 6 * difficulty.OverallDifficulty);
        }
        public static void AlltoallSubarrays <T>(ICommunicator comm, IList <T> array, IList <int>[] indicesToSend, IList <int>[] indicesToReceive)
        {
            string     key = StringUtil.TypeToString(typeof(T));
            TimingInfo timingInfo;

            lock (AlltoallSubarraysTimingInfos)
            {
                if (!AlltoallSubarraysTimingInfos.TryGetValue(key, out timingInfo))
                {
                    timingInfo = new TimingInfo();
                    AlltoallSubarraysTimingInfos.Add(key, timingInfo);
                }
            }
            long previousItemsTransmitted = AlltoallSubarraysItemsTransmitted;

            timingInfo.watch.Start();
            AlltoallSubarrays(comm, array, indicesToSend, array, indicesToReceive);
            timingInfo.watch.Stop();
            timingInfo.ItemsTransmitted += AlltoallSubarraysItemsTransmitted - previousItemsTransmitted;
        }
Beispiel #29
0
        public void ResolveCollisions(TimingInfo timingInfo)
        {
            var fDeltaTime = (float)timingInfo.ElapsedTime.TotalSeconds;
            var dynamicColliderComponents = ColliderComponentManager.Instance.Components
                                            .Where(colliderComponent => colliderComponent.IsColliding == true)
                                            .Where(colliderComponent => colliderComponent.CollisionType == ColliderComponent.CollisionTypes.Dynamic)
                                            .ToArray();

            foreach (var colliderComponent in dynamicColliderComponents)
            {
                var dynamicColliderWasMoved = TryResolveCollisions(colliderComponent, fDeltaTime)
                                              .Any(value => value == true);
                if (dynamicColliderWasMoved)
                {
                    DetectCollisions(timingInfo.ElapsedTime);
                    ResolveCollisions(timingInfo);
                    return;
                }
            }
        }
Beispiel #30
0
        public override void Update(TimingInfo timingInfo)
        {
            // Make a copy of the list before thus not to change the list we're iterating
            var particles = ParticleComponentManager.Instance.Components.ToArray();

            var now = timingInfo.TotalTime;

            foreach (var particle in particles)
            {
                var elapsedTime = now - particle.CreatedAt;

                if (elapsedTime < particle.TimeToLive)
                {
                    UpdateParticleColor(particle, elapsedTime);
                    continue;
                }

                particle.GameObject.Dispose();
                //_entityManager.Remove(entity);
            }
        }
Beispiel #31
0
        /// <summary>
        /// Applies default values to this HitObject.
        /// </summary>
        /// <param name="difficulty">The difficulty settings to use.</param>
        /// <param name="timing">The timing settings to use.</param>
        public virtual void ApplyDefaults(TimingInfo timing, BeatmapDifficulty difficulty)
        {
            ControlPoint overridePoint;
            ControlPoint timingPoint = timing.TimingPointAt(StartTime, out overridePoint);

            foreach (var sample in Samples)
            {
                if (sample.Volume == 0)
                {
                    sample.Volume = (overridePoint ?? timingPoint)?.SampleVolume ?? 0;
                }

                // If the bank is not assigned a name, assign it from the control point
                if (!string.IsNullOrEmpty(sample.Bank))
                {
                    continue;
                }

                sample.Bank = (overridePoint ?? timingPoint)?.SampleBank ?? @"normal";
            }
        }
        private void DumpTimings(ResultEntry result)
        {
            StringBuilder builder = new StringBuilder();
            TimingInfo[] infos = result.Timings;

            lstTimerValues.Items.Clear();
            btnWriteConfig.Enabled = false;

            foreach (TimingInfo info in infos)
            {
                TimingInfo infoTimers = new TimingInfo(info);
                infoTimers.ShowTimers = true;
                lstTimerValues.Items.Add(infoTimers);
            }
        }
Beispiel #33
0
        /// <summary>
        /// Loads the specified libretro implementation. 
        /// <para></para>
        /// This core is not actually initialized until Initialize is called.
        /// </summary>
        /// <param name="filename">The filename of the dynamic library.</param>
        /// <param name="info">Info about the frontend to pass to the core.</param>
        /// <param name="multipleInstances">If this is true, the library may be copied to a temporary directory if another instance of it has already been loaded into process memory.</param>
        public Core(string filename, FrontendInfo info, bool multipleInstances = true)
        {
            if (!instances.ContainsKey(filename))
            {
                instances.Add(filename, 0);
            }
            instances[filename]++;
            if (multipleInstances && instances[filename] > 1)
            {
                string newFilename = Path.GetTempPath() + Path.DirectorySeparatorChar + Path.GetFileName(filename) + "." + instances[filename].ToString();
                File.Copy(filename, newFilename, true);
                filename = newFilename;
                deleteOnExit = true;
            }
            frontEndInfo = info;
            core = new NativeLibrary(filename);
            LoadFunctions();    
            Variables = new Variables(new string[0], new string[0], new string[0][]);
            Screen = new Screen();
            Timing = new TimingInfo();
            envCallback = Core_Environment;
            vidCallback = Core_VideoRefresh;
            audCallback = Core_AudioSample;
            asbCallback = Core_AudioSampleBatch;
            inpCallback = Core_InputPoll;
            insCallback = Core_InputState;
            rumCallback = Core_Rumble;
            this.filename = filename;
            // this is used by Core_Environment
            unsafe
            {
                boolFalse = Marshal.AllocHGlobal(1);
                boolTrue = Marshal.AllocHGlobal(1);

                *((bool*)boolFalse) = false;
                *((bool*)boolTrue) = true;
            }
        }
        private void btnGenerate_Click(object sender, EventArgs e)
        {
            ulong baseFreq = 0;
            double fps = 0;
            ulong maxResults = 0;
            SortedList<double, ArrayList> timingInfos = new SortedList<double, ArrayList>();

            timingInfos.Clear();

            if (!double.TryParse(txtFps.Text, out fps))
            {
                return;
            }

            if (!ulong.TryParse(txtBaseFreq.Text, out baseFreq))
            {
                return;
            }

            if (!ulong.TryParse(txtResults.Text, out maxResults))
            {
                return;
            }

            double clock = (double)baseFreq / fps;
            uint t1Min = SelectedModel.T1min;
            uint t1Max = SelectedModel.T1max;
            uint t2Min = SelectedModel.T2min;
            uint t2Max = SelectedModel.T2max;

            for (uint t1 = t1Min; t1 <= t1Max; t1++)
            {
                uint t2_a = (uint)Math.Floor(clock / (double)t1);
                uint t2_b = (uint)Math.Ceiling(clock / (double)t1);

                if ((t2_a > t2Min && t2_a < t2Max) && (t2_b > t2Min && t2_b < t2Max))
                {
                    double exactFps_a = Math.Round((double)baseFreq / t1 / t2_a, 9);
                    double exactFps_b = Math.Round((double)baseFreq / t1 / t2_b, 9);

                    if ((Math.Abs(exactFps_a - fps) < MaxDelta) && (Math.Abs(exactFps_b - fps) < MaxDelta))
                    {
                        TimingInfo info_a = new TimingInfo(t1, t2_a, exactFps_a);
                        TimingInfo info_b = new TimingInfo(t1, t2_b, exactFps_b);

                        AddInfo(timingInfos, info_a);
                        AddInfo(timingInfos, info_b);
                    }
                }
            }

            double[] filtered = FilterEntries(timingInfos, fps, maxResults);
            DisplayResults(timingInfos, filtered);

            return;
        }
 public TimingInfo(TimingInfo info)
 {
     T1Value = info.T1Value;
     T2Value = info.T2Value;
     Fps = info.Fps;
 }
 public ResultEntry(double fps, TimingInfo[] timings)
 {
     Fps = fps;
     Timings = timings;
 }