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); }
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; } }
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; } }
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); }
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" }); }
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); }
public override void Update(TimingInfo timingInfo) { var playerGameObjects = PlayerComponentManager.Instance.Components.Select(c => c.GameObject); playerGameObjects.ForEach(playerGameObject => { UpdatePlayerGameObject(playerGameObject, timingInfo.ElapsedTime); }); }
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; }
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 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); }
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; } }
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; }
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); } } }
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)); }
/// <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))); }
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>(); } }); }
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; } }
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); }
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; } }
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); }
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); }
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); }
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; }
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; } } }
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); } }
/// <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"; } }
/// <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; }