Beispiel #1
0
        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);
        }
Beispiel #2
0
 public int GetClosestValidIndex(int index)
 {
     return((Frames.LastOrDefault(x => index > x.Index)
             ?? Frames.FirstOrDefault())
            ?.Index
            ?? -1);
 }
Beispiel #3
0
        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];
            }
        }
Beispiel #4
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);
        }
Beispiel #6
0
 public OverlayInfo this[int frame] => Frames.FirstOrDefault(p => p.FrameNumber == frame);
Beispiel #7
0
        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];
            }
        }