Пример #1
0
        public async Task <IActionResult> PutNumberParameter(long id, NumberParameter numberParameter)
        {
            if (id != numberParameter.NumberParameterId)
            {
                return(BadRequest());
            }

            _context.Entry(numberParameter).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!NumberParameterExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Пример #2
0
        public async Task <ActionResult <NumberParameter> > PostNumberParameter(NumberParameter numberParameter)
        {
            _context.NumberParameter.Add(numberParameter);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetNumberParameter), new { id = numberParameter.NumberParameterId }, numberParameter));
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            NumberParameter hz = new NumberParameter("Sampling Frequency(Hz)", 0.01M, 10000, 2);

            hz.Value = 60M;
            return(new ProcParam <SequenceProcEnv>[] { hz });
        }
Пример #4
0
        public IList <ProcParam <MotionProcEnv> > GetParameters()
        {
            MotionObjectSingleSelectParameter main = new MotionObjectSingleSelectParameter("Main Line", info => info.IsTypeOf <LineObject>(), true);
            NumberParameter enlarge = new NumberParameter("Enlarge targets", -10000, 10000, 3);

            return(new ProcParam <MotionProcEnv>[] { main, enlarge });
        }
Пример #5
0
    public static NumberComponent Instantiate(GameObject prefab, GameObject parent, NumberParameter parameter)
    {
        NumberComponent obj = Instantiate(prefab, parent.transform).GetComponent <NumberComponent>();

        obj.parameter = parameter;
        if (parameter.Title == null)
        {
            obj.title.gameObject.SetActive(false);
        }
        else
        {
            obj.title.text = parameter.Title;
        }
        if (parameter.Text == null)
        {
            obj.dscriptionObj.SetActive(false);
        }
        else
        {
            obj.dscription.text = parameter.Text;
        }
        if (parameter.Value != null)
        {
            obj.inputField.text = parameter.Value;
        }
        return(obj);
    }
        public SequenceData Operate(IList <ProcParam <SequenceProcEnv> > args, SequenceProcEnv env)
        {
            NumberParameter       offset = args[0] as NumberParameter;
            NumberParameter       scale  = args[1] as NumberParameter;
            SingleSelectParameter mode   = args[2] as SingleSelectParameter;

            bool offsetFirst = mode.Value == 0;

            TimeSeriesValues ret = new TimeSeriesValues(env.SelectedSequence.Values.ColumnNames);

            foreach (var pair in env.SelectedSequence.Values.Enumerate())
            {
                decimal?[] row = new decimal?[pair.Value.Length];
                for (int i = 0; i < row.Length; i++)
                {
                    decimal?tmp = pair.Value[i];
                    if (tmp.HasValue)
                    {
                        if (offsetFirst)
                        {
                            tmp = tmp.Value + offset.Value;
                        }
                        tmp = tmp.Value * scale.Value;
                        if (!offsetFirst)
                        {
                            tmp = tmp.Value + offset.Value;
                        }
                    }
                    row[i] = tmp;
                }
                ret[pair.Key] = row;
            }
            return(new SequenceData(ret, null, PathEx.GiveName("OffsetScale", env.SelectedSequence.Title)));
        }
        public IList <ProcParam <MotionProcEnv> > GetParameters()
        {
            NumberParameter begin = new NumberParameter("Begin Time", 0, 100000, 0);
            NumberParameter end   = new NumberParameter("End Time", 0, 100000, 0);

            return(new ProcParam <MotionProcEnv>[] { begin, end });
        }
        public bool ValidateArguments(IList <ProcParam <MotionProcEnv> > args, ref string errorMessage)
        {
            NumberParameter begin = args[0] as NumberParameter;
            NumberParameter end   = args[1] as NumberParameter;

            return(true);
        }
        public void Operate(IList <MotionObjectInfo> selectedInfoList, IList <ProcParam <MotionProcEnv> > args, MotionDataSet dataSet, ProgressInformation progressInfo)
        {
            NumberParameter begin = args[0] as NumberParameter;
            NumberParameter end   = args[1] as NumberParameter;

            dataSet.RemoveFrameAll((f, i) => f.Time < begin.Value || end.Value < f.Time);
        }
Пример #10
0
        public bool ValidateArguments(IList <ProcParam <MotionProcEnv> > args, ref string errorMessage)
        {
            SingleSelectParameter mode  = args[0] as SingleSelectParameter;
            NumberParameter       limit = args[1] as NumberParameter;

            return(true);
        }
Пример #11
0
        public IList <ProcParam <MotionProcEnv> > GetParameters()
        {
            SingleSelectParameter mode  = new SingleSelectParameter("Mode", new string[] { "上書き", "追加" });
            NumberParameter       limit = new NumberParameter("連続する欠落を補完するのフレーム数の上限", 0, 1000000, 0);

            limit.Value = 60;
            return(new ProcParam <MotionProcEnv>[] { mode, limit });
        }
        public IList <ProcParam <MotionProcEnv> > GetParameters()
        {
            NumberParameter x = new NumberParameter("X", -100000, 100000, 3);
            NumberParameter y = new NumberParameter("Y", -100000, 100000, 3);
            NumberParameter z = new NumberParameter("Z", -100000, 100000, 3);

            return(new ProcParam <MotionProcEnv>[] { x, y, z });
        }
        public IList <ProcParam <MotionProcEnv> > GetParameters()
        {
            SingleSelectParameter mode  = new SingleSelectParameter("Mode ", new string[] { "倍率", "長さ指定", "長さ加算" });
            NumberParameter       value = new NumberParameter("Value", -100000, 100000, 3);

            value.Value = 1;
            return(new ProcParam <MotionProcEnv>[] { mode, value });
        }
        public IList <MotionObject> EditObject(IList <MotionObjectInfo> targetInfoList, IList <ProcParam <MotionProcEnv> > args, ReadOnlyMotionFrame frame, bool previewMode)
        {
            SingleSelectParameter modeRad   = args[0] as SingleSelectParameter;
            NumberParameter       valueRad  = args[1] as NumberParameter;
            SingleSelectParameter modeAxis  = args[2] as SingleSelectParameter;
            NumberParameter       valueAxis = args[3] as NumberParameter;
            List <MotionObject>   ret       = new List <MotionObject>();

            foreach (MotionObjectInfo info in targetInfoList)
            {
                CylinderObject cylinder = frame[info] as CylinderObject;
                if (cylinder != null)
                {
                    float radius = cylinder.Radius;
                    float axis   = cylinder.AxisLength();
                    try {
                        switch (modeRad.Value)
                        {
                        case 0:
                            radius *= (float)valueRad.Value;
                            break;

                        case 1:
                            radius = (float)valueRad.Value;
                            break;

                        case 2:
                            radius += (float)valueRad.Value;
                            break;
                        }
                    } catch (ArithmeticException) { }
                    try {
                        switch (modeAxis.Value)
                        {
                        case 0:
                            axis *= (float)valueAxis.Value;
                            break;

                        case 1:
                            axis = (float)valueAxis.Value;
                            break;

                        case 2:
                            axis += (float)valueAxis.Value;
                            break;
                        }
                    } catch (ArithmeticException) { }
                    ret.Add(new CylinderObject(cylinder.Position, cylinder.AxisDirection() * axis, radius));
                }
                else
                {
                    ret.Add(null);
                }
            }
            return(ret);
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            var target = new LabelSelectParameter("対象のラベル", true);
            var length = new NumberParameter("秒数", 0, 10000, 3);
            var action = new SingleSelectParameter("大小", new[] { "「秒数」より短いものを置換", "「秒数」より長いものを置換" });
            var border = new BooleanParameter("「秒数」に一致するものを置換");
            var glue   = new SingleSelectParameter("置換結果", new[] { "空ラベル", "前後のラベルが等しければそのラベル", "直前のラベル", "直後のラベル" });

            return(new ProcParam <SequenceProcEnv>[] { target, length, action, border, glue });
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            NumberParameter offset = new NumberParameter("Offset", -10000000, 10000000, 3, 1);
            NumberParameter scale  = new NumberParameter("Scale", -10000000, 10000000, 3, 1);

            scale.Value = 1M;
            SingleSelectParameter mode = new SingleSelectParameter("Mode", new String[] { "offset後にscale", "scale後にoffset" });

            return(new ProcParam <SequenceProcEnv>[] { offset, scale, mode });
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            LabelSelectParameter border    = new LabelSelectParameter("Target Label", true);
            NumberParameter      left      = new NumberParameter("Extend second before Begin", -1000, 1000, 3);
            NumberParameter      right     = new NumberParameter("Extend second after End", -1000, 1000, 3);
            BooleanParameter     percent   = new BooleanParameter("Values as Percentage of Label length");
            BooleanParameter     withEmpty = new BooleanParameter("Fill with Empty label when shrink");

            return(new ProcParam <SequenceProcEnv>[] { border, left, right, percent, withEmpty });
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            var mode      = new SingleSelectParameter("Mode", new[] { "Per Time", "Per Correct Label Count", "Per Obtained Label Count" });
            var threshold = new NumberParameter("Threshold for Ratio of Label Coverage for Matching", 0.001M, 1, 3);

            threshold.Value = 0.001M;
            var correct = new SequenceSingleSelectParameter("Correct Label", (v) => v.Type != SequenceType.Numeric);

            return(new ProcParam <SequenceProcEnv>[] { mode, threshold, correct });
        }
Пример #19
0
    private void SetComponentForParameter()
    {
        List <SubNodeParameter> subNodeParameters = new List <SubNodeParameter>();

        foreach (Parameter p in this.node.parameters)
        {
            //Number
            if (p.type == ParameterType.number)
            {
                NumberParameter pram  = p as NumberParameter;
                var             compo = NumberComponent.Instantiate(MainViweModel.instance.NumberComponentPrefab, contentsObject, pram);
                componentList.Add(compo);
            }

            //sentence
            if (p.type == ParameterType.sentence)
            {
                SentenceParameter pram = p as SentenceParameter;
                var compo = SentenceComponent.Instantiate(MainViweModel.instance.SentenceComponentPrefab, contentsObject, pram);
                componentList.Add(compo);
            }

            //dropdown
            if (p.type == ParameterType.dropdown)
            {
                DropdownParameter pram = p as DropdownParameter;
                var compo = DropdownComponent.Instantiate(MainViweModel.instance.DropdownComponentPrefab, contentsObject, pram);
                componentList.Add(compo);
            }

            //nodes
            if (p.type == ParameterType.nodes)
            {
                NodesParameter pram  = p as NodesParameter;
                var            compo = SubNodeListComponent.Instantiate(MainViweModel.instance.SubNodeListComponentPrefab, contentsObject, pram.list, this);
                componentList.Add(compo);
                if (pram.Title != null)
                {
                    compo.title.text = pram.Title;
                }
            }

            //subNodeList
            if (p.type == ParameterType.subNode)
            {
                subNodeParameters.Add(p as SubNodeParameter);
            }
        }

        if (subNodeParameters.Count != 0)
        {
            var compo = SubNodeListComponent.Instantiate(MainViweModel.instance.SubNodeListComponentPrefab, contentsObject, subNodeParameters, this);
            componentList.Add(compo);
        }
    }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            var timeBefore = new NumberParameter("前方の時間範囲", 0, 1000, 3);

            timeBefore.Value = 0.1M;
            var timeAfter = new NumberParameter("後方の時間範囲", 0, 1000, 3);

            timeAfter.Value = 0.1M;
            var exclude = new NumberParameter("欠損があっても値を出力する限界値(0~1)", 0, 1, 3);

            return(new[] { timeBefore, timeAfter, exclude });
        }
        public IList <ProcParam <MotionProcEnv> > GetParameters()
        {
            SingleSelectParameter modeRad  = new SingleSelectParameter("Mode for Radius", new string[] { "倍率", "半径指定", "半径加算" });
            NumberParameter       valueRad = new NumberParameter("Value for Radius", -10000, 10000, 3);

            valueRad.Value = 1;
            SingleSelectParameter modeAxis  = new SingleSelectParameter("Mode for Thickness", new string[] { "倍率", "厚さ指定", "厚さ加算" });
            NumberParameter       valueAxis = new NumberParameter("Value for Thickness", -10000, 10000, 3);

            valueAxis.Value = 1;
            return(new ProcParam <MotionProcEnv>[] { modeRad, valueRad, modeAxis, valueAxis });
        }
        public IList <ProcParam <SequenceProcEnv> > GetParameters()
        {
            var stddev = new NumberParameter("StdDev", 0, 1000, 3);

            stddev.Value = 0.05M;
            var details = new NumberParameter("Detail", 1, 100, 0);

            details.Value = 10;
            var exclude = new NumberParameter("Limit rate to contain empty values", 0, 1, 3);

            return(new[] { stddev, details, exclude });
        }
Пример #23
0
        public bool ValidateArguments(IList <ProcParam <MotionProcEnv> > args, ref string errorMessage)
        {
            MotionObjectSingleSelectParameter main = args[0] as MotionObjectSingleSelectParameter;

            if (main.Value == null)
            {
                errorMessage = global::MotionDataHandler.Properties.Settings.Default.Msg_CannotSpecifyNull + ": " + args[0].ParamName;
                return(false);
            }
            NumberParameter enlarge = args[1] as NumberParameter;

            return(true);
        }
        public bool ValidateArguments(IList <ProcParam <MotionProcEnv> > args, ref string errorMessage)
        {
            SingleSelectParameter mode  = args[0] as SingleSelectParameter;
            NumberParameter       value = args[1] as NumberParameter;

            if (mode.Value == 0 || mode.Value == 1)
            {
                if (value.Value < 0)
                {
                    errorMessage = "負のサイズを指定できません";
                    return(false);
                }
            }
            return(true);
        }
        public IList <MotionObject> EditObject(IList <MotionObjectInfo> targetInfoList, IList <ProcParam <MotionProcEnv> > args, ReadOnlyMotionFrame frame, bool previewMode)
        {
            NumberParameter     x   = args[0] as NumberParameter;
            NumberParameter     y   = args[1] as NumberParameter;
            NumberParameter     z   = args[2] as NumberParameter;
            List <MotionObject> ret = new List <MotionObject>();

            foreach (MotionObjectInfo info in targetInfoList)
            {
                MotionObject obj = frame[info];
                if (obj == null)
                {
                    ret.Add(null);
                }
                else
                {
                    ret.Add(obj.CloneOffsetObject(new Microsoft.DirectX.Vector3((float)x.Value, (float)y.Value, (float)z.Value)));
                }
            }
            return(ret);
        }
        public IList <MotionObject> EditObject(IList <MotionObjectInfo> targetInfoList, IList <ProcParam <MotionProcEnv> > args, ReadOnlyMotionFrame frame, bool previewMode)
        {
            SingleSelectParameter mode  = args[0] as SingleSelectParameter;
            NumberParameter       value = args[1] as NumberParameter;
            List <MotionObject>   ret   = new List <MotionObject>();

            foreach (MotionObjectInfo info in targetInfoList)
            {
                LineObject line = frame[info] as LineObject;
                if (line != null)
                {
                    float length = line.Edge.Length();
                    try {
                        switch (mode.Value)
                        {
                        case 0:
                            length *= (float)value.Value;
                            break;

                        case 1:
                            length = (float)value.Value;
                            break;

                        case 2:
                            length += (float)value.Value;
                            break;
                        }
                    } catch (ArithmeticException) { }
                    ret.Add(new LineObject(line.Position, line.Direction() * length));
                }
                else
                {
                    ret.Add(null);
                }
            }
            return(ret);
        }
        public IList <MotionObject> EditObject(IList <MotionObjectInfo> targetInfoList, IList <ProcParam <MotionProcEnv> > args, ReadOnlyMotionFrame frame, bool previewMode)
        {
            SingleSelectParameter mode  = args[0] as SingleSelectParameter;
            NumberParameter       value = args[1] as NumberParameter;
            List <MotionObject>   ret   = new List <MotionObject>();

            foreach (MotionObjectInfo info in targetInfoList)
            {
                SphereObject sphere = frame[info] as SphereObject;
                if (sphere != null)
                {
                    float radius = sphere.Radius;
                    try {
                        switch (mode.Value)
                        {
                        case 0:
                            radius *= (float)value.Value;
                            break;

                        case 1:
                            radius = (float)value.Value;
                            break;

                        case 2:
                            radius += (float)value.Value;
                            break;
                        }
                    } catch (ArithmeticException) { }
                    ret.Add(new SphereObject(sphere.Position, radius));
                }
                else
                {
                    ret.Add(null);
                }
            }
            return(ret);
        }
Пример #28
0
    protected override void SetupParameters()
    {
        Parameters.Add(new NumberParameter()
        {
            Name      = "DrawCalls Count",
            Min       = 1,
            Max       = 5000,
            Value     = 50,
            Precision = 0.1f,
            OnChanged = Handler_DrawcallsCountChanged
        });

        _VariantsCountParameter = new NumberParameter()
        {
            Name      = "Variants Count",
            Min       = 1,
            Max       = 10,
            Value     = 1,
            Precision = 1f,
            OnChanged = Handler_VariantsCountChanged
        };
        Parameters.Add(_VariantsCountParameter);

        Parameters.Add(new VariantParameter()
        {
            Name      = "Draw Mode",
            Variants  = VariantParameter.ParseEnum <DrawModes>(),
            OnChanged = Handler_DrawModeChanged
        });

        Parameters.Add(new VariantParameter()
        {
            Name      = "TestSubject",
            Variants  = VariantParameter.ParseEnum <TestSubjects>(),
            OnChanged = Handler_TestSubjectChanged
        });

        Parameters.Add(new FlagParameter()
        {
            Name      = "Z Culling",
            Checked   = true,
            OnChanged = Handler_ZCullingChanged
        });

        Parameters.Add(new VariantParameter()
        {
            Name     = "Shader",
            Variants = new List <object>()
            {
                "Unlit",
                "Standard"
            },
            OnChanged = Handler_ShaderChanged
        });

        Parameters.Add(new VariantParameter()
        {
            Name     = "Texture Size",
            Variants = new List <object>()
            {
                "256",
                "2048",
                "4096"
            },
            CurrentIndex = 1,
            OnChanged    = Handler_TextureSizeChanged
        });

        Parameters.Add(new VariantParameter()
        {
            Name     = "Mesh",
            Variants = new List <object>()
            {
                "quad_2",
                "quad_512",
                "quad_2048",
                "quad_32768"
            },
            CurrentIndex = 0,
            OnChanged    = Handler_MeshSizeChanged
        });

        foreach (var testParameter in Parameters)
        {
            testParameter.ExecuteChangedCallback();
        }

        Initialized = true;
        UpdateMaterials();
    }
Пример #29
0
        public void Operate(IList <MotionObjectInfo> selectedInfoList, IList <ProcParam <MotionProcEnv> > args, MotionDataSet dataSet, ProgressInformation progressInfo)
        {
            SingleSelectParameter mode   = args[0] as SingleSelectParameter;
            NumberParameter       limit2 = args[1] as NumberParameter;
            bool addMode = mode.Value == 1;
            int  limit   = (int)limit2.Value;

            progressInfo.Initialize(selectedInfoList.Count, "Interpolate");
            foreach (var info in selectedInfoList)
            {
                // 欠落範囲の集合
                RangeSet <int> missings = new RangeSet <int>();

                bool exist = true;
                int  begin = 0;
                // 最初のフレームからかけている部分,最後のかけている部分は無視
                for (int i = 0; i < dataSet.FrameLength; i++)
                {
                    if (dataSet.GetFrameByIndex(i)[info] == null)
                    {
                        if (exist)
                        {
                            begin = i;
                            exist = false;
                        }
                    }
                    else
                    {
                        if (!exist)
                        {
                            if (begin != 0)
                            {
                                missings.Add(new RangeSet <int> .Range(begin, i));
                                exist = true;
                            }
                        }
                    }
                }
                // 別オブジェクトにするとき用に入力オブジェクトと出力オブジェクトを分ける
                MotionObjectInfo addInfo = info;
                if (addMode)
                {
                    // 別オブジェクトにするオプション
                    addInfo      = new MotionObjectInfo(info.ObjectType, info);
                    addInfo.Name = PathEx.GiveName("interpolate", info.Name);
                    dataSet.AddObject(addInfo);
                }
                // 線形補間
                foreach (var range in missings)
                {
                    if (limit == 0 || range.End - range.Start <= limit)
                    {
                        int          pre       = range.Start - 1;
                        int          post      = range.End;
                        MotionFrame  preFrame  = dataSet.GetFrameByIndex(pre);
                        MotionFrame  postFrame = dataSet.GetFrameByIndex(post);
                        MotionObject preObject = preFrame[info];
                        if (preObject != null)
                        {
                            for (int index = range.Start; index < range.End; index++)
                            {
                                float       interpolater = (float)(index - pre) / (post - pre);
                                MotionFrame frame        = dataSet.GetFrameByIndex(index);
                                frame[addInfo] = preObject.InterpolateLinear(postFrame[info], interpolater);
                            }
                        }
                    }
                }
                progressInfo.CurrentValue++;
            }

            dataSet.DoFrameListChanged();
            if (addMode)
            {
                dataSet.DoObjectInfoSetChanged();
            }
        }
Пример #30
0
        public IList <SequenceData> OutputSequence(IList <MotionObjectInfo> selected, IList <ProcParam <MotionProcEnv> > args, IEnumerable <ReadOnlyMotionFrame> frames, ProgressInformation progressInfo)
        {
            MotionObjectSingleSelectParameter main = args[0] as MotionObjectSingleSelectParameter;
            NumberParameter enlarge     = args[1] as NumberParameter;
            float           enlargement = 0;

            try { enlargement = (float)enlarge.Value; } catch (ArithmeticException) { }
            IList <MotionObjectInfo> targetInfoList = selected.Where(info => info != main.Value).ToList();


            ICSLabelSequence labelSequence = new ICSLabelSequence(TimeController.Singleton.EndTime);
            string           prevLabelText = null;
            decimal          prevTime      = decimal.MinValue;

            decimal wholeEndTime = decimal.MinValue;

            foreach (var frame in frames)
            {
                wholeEndTime = frame.Time;

                LineObject line      = frame[main.Value] as LineObject;
                string     labelText = "";
                if (line == null || targetInfoList.Any(info => frame[info] == null))
                {
                    labelText = "no data";
                }
                else
                {
                    float            minDistance = float.MaxValue;
                    MotionObjectInfo nearest     = null;
                    foreach (var targetInfo in targetInfoList)
                    {
                        float distance;
                        if (frame[targetInfo].DetectLineCollision(line.Position, line.AnotherEnd, enlargement, out distance))
                        {
                            if (distance < minDistance)
                            {
                                nearest     = targetInfo;
                                minDistance = distance;
                            }
                        }
                    }
                    if (nearest != null)
                    {
                        labelText = nearest.Name;
                    }
                    else
                    {
                        labelText = "else";
                    }
                }
                if (prevLabelText != labelText)
                {
                    decimal endTime = frame.Time;
                    if (prevTime < endTime && prevLabelText != null)
                    {
                        labelSequence.SetLabel(prevTime, endTime, prevLabelText);
                    }
                    prevTime      = endTime;
                    prevLabelText = labelText;
                }
            }
            if (prevTime < wholeEndTime && prevLabelText != null)
            {
                labelSequence.SetLabel(prevTime, wholeEndTime, prevLabelText);
            }
            SequenceData data = SequenceData.FromLabelSequence(labelSequence, PathEx.GiveName("Collision", main.Value.Name));

            return(new SequenceData[] { data });
        }