private FeFrame AddNewOrGet_LineByCoordinate([NotNull] FeJoint inFrom, [NotNull] FeJoint inTo, [NotNull] FeSection inSection) { if (inFrom == null) { throw new ArgumentNullException(nameof(inFrom)); } if (inTo == null) { throw new ArgumentNullException(nameof(inTo)); } if (inSection == null) { throw new ArgumentNullException(nameof(inSection)); } // Already exists in the list? FeFrame alreadyExisting = Frames.FirstOrDefault(a => (a.Value.IJoint == inFrom && a.Value.JJoint == inTo) || (a.Value.JJoint == inFrom && a.Value.IJoint == inTo)).Value; if (alreadyExisting != null) { return(alreadyExisting); } //if () throw new InvalidOperationException("Finite Element Models are Limited to Having One Frame Per Location."); FeFrame newFrame = new FeFrame(_frameCount.ToString(), inSection, inFrom, inTo); Frames.Add(newFrame.Id, newFrame); _frameCount++; return(newFrame); }
public int GetClosestValidIndex(int index) { return((Frames.LastOrDefault(x => index > x.Index) ?? Frames.FirstOrDefault()) ?.Index ?? -1); }
private void Search7_Timeline() { SFMT sfmt = new SFMT(Seed.Value); int start_frame = (int)Frame_min.Value; FuncUtil.getblinkflaglist(start_frame, start_frame, sfmt, Modelnum); // Advance for (int i = 0; i < start_frame; i++) { sfmt.Next(); } // Prepare ModelStatus status = new ModelStatus(Modelnum, sfmt); getsetting(sfmt); int totaltime = (int)TimeSpan.Value * 30; int frame = (int)Frame_min.Value; int frameadvance, Currentframe; // Start for (int i = 0; i <= totaltime; i++) { Currentframe = frame; RNGPool.CopyStatus(status); var result = RNGPool.Generate7() as Result7; frameadvance = status.NextState(); frame += frameadvance; for (int j = 0; j < frameadvance; j++) { RNGPool.AddNext(sfmt); } if (!filter.CheckResult(result)) { continue; } Frames.Add(new Frame(result, frame: Currentframe, time: i * 2)); if (Frames.Count > 100000) { break; } } if (Frames.FirstOrDefault()?.FrameNum == (int)Frame_min.Value) { Frames[0].Blink = FuncUtil.blinkflaglist[0]; } }
protected void MainWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { if (e.Error != null) { throw e.Error; } //TODO: handle error (no direct UI call => no UI handle) KeyValuePair <Work, object> arg = (KeyValuePair <Work, object>)e.Result; WorkFinishedEventArgs eArgs = new WorkFinishedEventArgs(e.Cancelled, arg.Key); switch (arg.Key) { case Work.LoadFrames: if (e.Cancelled) { foreach (string s in (string[])arg.Value) { Frame f = Frames.FirstOrDefault(t => t.FilePath == s); if (f == null) { break; } else { Frames.Remove(f); } } } OnFramesLoaded(this, eArgs); break; case Work.CalculateBrightness: IsBrightnessCalculated = !e.Cancelled; OnBrightnessCalculated(this, eArgs); break; default: OnWorkDone(this, eArgs); break; } IsWorkingWaitHandler.Set(); }
public bool IsOrigin(Vector2Short uv, out FrameProperty frame) { frame = Frames.FirstOrDefault(f => f.UV == uv); return(frame != null); }
public OverlayInfo this[int frame] => Frames.FirstOrDefault(p => p.FrameNumber == frame);
private void Search7_Timeline() { if (gen7fishing) { Search7_FishyTimeline(); return; } SFMT sfmt = new SFMT(Seed.Value); int start_frame = (int)Frame_min.Value; int targetframe = (int)TargetFrame.Value; FuncUtil.getblinkflaglist(start_frame, start_frame, sfmt, Modelnum); // Advance for (int i = 0; i < start_frame; i++) { sfmt.Next(); } // Prepare ModelStatus status = new ModelStatus(Modelnum, sfmt) { IsBoy = Boy.Checked, raining = Raining.Checked }; getsetting(sfmt); int totaltime = (int)TimeSpan.Value * 30; int frame = (int)Frame_min.Value; int frameadvance, Currentframe; int FirstJumpFrame = (int)JumpFrame.Value; FirstJumpFrame = FirstJumpFrame >= start_frame && gen7fidgettimeline ? FirstJumpFrame : int.MaxValue; // Start for (int i = 0; i <= totaltime; i++) { Currentframe = frame; RNGPool.CopyStatus(status); var result = RNGPool.Generate7(); if (frame >= FirstJumpFrame) // Find the first call { status.fidget_cd = XMenu.Checked ? 3 : 1; FirstJumpFrame = int.MaxValue; // Disable this part } byte Jumpflag = (byte)(status.fidget_cd == 1 ? 1 : 0); frameadvance = status.NextState(); frame += frameadvance; for (int j = 0; j < frameadvance; j++) { RNGPool.AddNext(sfmt); } if (Currentframe <= targetframe && targetframe < frame) { Frame.standard = i * 2; } if (!filter.CheckResult(result)) { continue; } Frames.Add(new Frame(result, frame: Currentframe, time: i * 2, blink: Jumpflag)); if (Frames.Count > MAX_RESULTS_NUM) { break; } } if (Frames.FirstOrDefault()?.FrameNum == (int)Frame_min.Value) { Frames[0].Blink = FuncUtil.blinkflaglist[0]; } }