// Token: 0x060000B2 RID: 178 RVA: 0x0000A11C File Offset: 0x0000831C
            private bool guiSlider(float margin, TextureModifier.DirtyValue dirtyValue)
            {
                float num = dirtyValue.Value;

                GUILayout.BeginHorizontal(new GUILayoutOption[0]);
                try
                {
                    GUILayout.Label(dirtyValue.Name, TextureModifier.uiParams.lStyle, new GUILayoutOption[]
                    {
                        GUILayout.Width(64f)
                    });
                    GUILayout.Label(num.ToString("F0"), TextureModifier.uiParams.lStyle, new GUILayoutOption[]
                    {
                        GUILayout.Width(32f)
                    });
                    GUILayout.BeginVertical(new GUILayoutOption[0]);
                    GUILayout.Space(margin * 5f);
                    num = GUILayout.HorizontalSlider(num, dirtyValue.Min, dirtyValue.Max, new GUILayoutOption[0]);
                    GUILayout.EndVertical();
                    GUILayout.Space(margin * 3f);
                }
                finally
                {
                    GUILayout.EndHorizontal();
                }
                if (NumberUtil.Equals(dirtyValue.Value, num, 0.001f))
                {
                    return(false);
                }
                dirtyValue.Value = num;
                return(true);
            }
コード例 #2
0
            private bool guiSlider(float margin, DirtyValue dirtyValue)
            {
                var val = dirtyValue.Value;

                GUILayout.BeginHorizontal();
                try {
                    GUILayout.Label(dirtyValue.Name, uiParams.lStyle, GUILayout.Width(64));
                    GUILayout.Label(val.ToString("F0"), uiParams.lStyle, GUILayout.Width(32));

                    GUILayout.BeginVertical();
                    GUILayout.Space(margin * 5f);
                    val = GUILayout.HorizontalSlider(val, dirtyValue.Min, dirtyValue.Max);
                    GUILayout.EndVertical();
                    GUILayout.Space(margin * 3);
                } finally {
                    GUILayout.EndHorizontal();
                }

                if (NumberUtil.Equals(dirtyValue.Value, val))
                {
                    return(false);
                }
                dirtyValue.Value = val;
                return(true);
            }
コード例 #3
0
        // Token: 0x0600032D RID: 813 RVA: 0x0001A014 File Offset: 0x00018214
        private bool DrawSlider(ref float sliderVal, float min, float max)
        {
            float val  = sliderVal;
            bool  flag = this.DrawSlider(delegate()
            {
                float num = GUILayout.HorizontalSlider(val, min, max, new GUILayoutOption[]
                {
                    GUILayout.ExpandWidth(true)
                });
                if (!NumberUtil.Equals(num, val, this.epsilon))
                {
                    if (val >= min && max >= val)
                    {
                        val = num;
                        return(true);
                    }
                    if (min < num && num < max)
                    {
                        val = num;
                        return(true);
                    }
                }
                return(false);
            });

            if (flag)
            {
                sliderVal = val;
            }
            return(flag);
        }
コード例 #4
0
        private bool DrawSlider(ref float sliderVal, float min, float max)
        {
            var val     = sliderVal;
            var changed = DrawSlider(() => {
                var slidVal = GUILayout.HorizontalSlider(val, min, max, GUILayout.ExpandWidth(true));
                if (!NumberUtil.Equals(slidVal, val, epsilon))   // スライダー変更時のみ
                {
                    if (val < min || max < val)
                    {
                        // スライダーの範囲外の場合:スライダーを移動したケースを検知
                        if (min < slidVal && slidVal < max)
                        {
                            val = slidVal;
                            return(true);
                        }
                    }
                    else
                    {
                        val = slidVal;
                        return(true);
                    }
                }
                return(false);
            });

            if (changed)
            {
                sliderVal = val;
            }
            return(changed);
        }
 // Token: 0x06000307 RID: 775 RVA: 0x00018908 File Offset: 0x00016B08
 public void Update(float value)
 {
     if (!NumberUtil.Equals(this.val, value, 0.001f))
     {
         base.Set(value);
     }
 }
            // RGB -> HSL 変換
            public static Vector4 RGBToHsl(Color c)
            {
                c.r = Mathf.Clamp01(c.r);
                c.g = Mathf.Clamp01(c.g);
                c.b = Mathf.Clamp01(c.b);

                float max = Mathf.Max(c.r, Mathf.Max(c.g, c.b));
                float min = Mathf.Min(c.r, Mathf.Min(c.g, c.b));

                float h = 0f;
                float s = 0f;
                float l = (max + min) / 2f;
                float d = max - min;

                // FIXME float compare
                if (!NumberUtil.Equals(d, 0f))
                {
                    s = (l > 0.5f) ? (d / (2f - max - min)) : (d / (max + min));
                    if (NumberUtil.Equals(max, c.r))
                    {
                        h = (c.g - c.b) / d + (c.g < c.b ? 6f : 0f);
                    }
                    else if (NumberUtil.Equals(max, c.g))
                    {
                        h = (c.b - c.r) / d + 2f;
                    }
                    else
                    {
                        h = (c.r - c.g) / d + 4f;
                    }
                    h /= 6f;
                }
                return(new Vector4(h, s, l, c.a));
            }
コード例 #7
0
 // Token: 0x0600030E RID: 782 RVA: 0x00018C10 File Offset: 0x00016E10
 internal void ShowCheckBox(string label, EditValue edit, Action <float> func)
 {
     GUILayout.BeginHorizontal(new GUILayoutOption[0]);
     try
     {
         GUILayout.Label(label, this.uiParams.lStyle, new GUILayoutOption[]
         {
             this.optItemHeight
         });
         GUILayout.Space((float)this.uiParams.marginL);
         float      num     = edit.val;
         GUIContent content = NumberUtil.Equals(num, 0f, 0.001f) ? ResourceHolder.Instance.Checkoff : ResourceHolder.Instance.Checkon;
         if (GUILayout.Button(content, this.bStyleCenter, new GUILayoutOption[]
         {
             GUILayout.Width(50f)
         }))
         {
             num = 1f - num;
             edit.Set(num);
             func(num);
         }
     }
     finally
     {
         GUILayout.EndHorizontal();
     }
 }
        private bool drawSlider(ref float sliderVal, float min, float max)
        {
            bool changed = false;

            GUILayout.BeginVertical();
            try {
                GUILayout.Space(sliderMargin);
                GUILayoutOption opt     = GUILayout.ExpandWidth(true); //GUILayout.Width(uiParams.colorRect.width * 0.65f);
                var             slidVal = GUILayout.HorizontalSlider(sliderVal, min, max, opt);
                if (!NumberUtil.Equals(slidVal, sliderVal, EPSILON))   // スライダー変更時のみ
                {
                    if (sliderVal > max || sliderVal < min)
                    {
                        // スライダーの範囲外の場合:スライダーを移動したケースを検知
                        if (slidVal < max && slidVal > min)
                        {
                            sliderVal = slidVal;
                            changed   = true;
                        }
                    }
                    else
                    {
                        sliderVal = slidVal;
                        changed   = true;
                    }
                }
            } finally {
                GUILayout.EndVertical();
            }
            return(changed);
        }
コード例 #9
0
 public void Update(float value)
 {
     if (!NumberUtil.Equals(val, value))
     {
         Set(value);
     }
 }
            // HSL -> RGB 変換
            public static Color HslToRGB(Vector4 hsl)
            {
                Color c;

                c.a = hsl.w;

                float h = hsl.x;
                float s = hsl.y;
                float l = hsl.z;

                if (NumberUtil.Equals(s, 0f))
                {
                    c.r = l;
                    c.g = l;
                    c.b = l;
                }
                else
                {
                    float y = (l < 0.5f) ? (l * (1f + s)) : ((l + s) - l * s);
                    float x = 2f * l - y;
                    c.r = Hue(x, y, h + 1f / 3f);
                    c.g = Hue(x, y, h);
                    c.b = Hue(x, y, h - 1f / 3f);
                }

                return(c);
            }
コード例 #11
0
        public void TestTranslate()
        {
            identMatrix.Translate(5, 7);
            Point point  = Point.Create(10, 20);
            Point tPoint = identMatrix.TransformPoint(point);

            Assert.IsTrue(NumberUtil.Equals(15, tPoint.X), "wrong X value " + tPoint.X);
            Assert.IsTrue(NumberUtil.Equals(27, tPoint.Y), "wrong Y value " + tPoint.Y);
        }
コード例 #12
0
        public void TestScale()
        {
            identMatrix.Scale(2.0f, 0.5f);
            Point point  = Point.Create(10, 20);
            Point sPoint = identMatrix.TransformPoint(point);

            Assert.IsTrue(NumberUtil.Equals(20.0f, sPoint.X), "wrong X value " + sPoint.X);
            Assert.IsTrue(NumberUtil.Equals(10.0f, sPoint.Y), "wrong Y value " + sPoint.Y);
        }
コード例 #13
0
        // Token: 0x06000372 RID: 882 RVA: 0x0001EFC0 File Offset: 0x0001D1C0
        private bool DrawTextField(float val, ref float editedVal)
        {
            string text  = val.ToString("F3");
            string text2 = GUILayout.TextField(text, ACCTexturesView.uiParams.textStyleSC, new GUILayoutOption[]
            {
                ACCTexturesView.optInputWidth
            });

            return(!(text == text2) && float.TryParse(text2, out editedVal) && !NumberUtil.Equals(val, editedVal, 0.001f));
        }
コード例 #14
0
        public void TestConcatenatedTransformations()
        {
            identMatrix.Rotate((float)Math.PI / 2.0f);
            identMatrix.Scale(0.5f, 0.5f);
            identMatrix.Translate(0.0f, 5.0f);

            Point ctPoint = identMatrix.TransformPoint(10, 0);

            Assert.IsTrue(NumberUtil.Equals(0.0f, ctPoint.X), "wrong X value " + ctPoint.X);
            Assert.IsTrue(NumberUtil.Equals(10.0f, ctPoint.Y), "wrong Y value " + ctPoint.Y);
        }
        public void FilterTexture(Texture2D dstTex, Texture2D srcTex, FilterParam filterParam)
        {
            float outputBase  = filterParam.OutputMin * 0.01f;
            float outputScale = (filterParam.OutputMax - filterParam.OutputMin) * 0.01f;

            float inputDelta = filterParam.InputMax - filterParam.InputMin;

            if (inputDelta < 0.001f)
            {
                inputDelta = 0.01f;                      // ゼロ除算を避けるため
            }
            float mid = filterParam.InputMid;

            if (mid < 0.001f)
            {
                mid = 0.01f;                             // NegativeInfinityを避けるため
            }
            float inputExp   = Mathf.Log(mid * 0.01f) / Mathf.Log(0.5f);
            float inputBase  = (-filterParam.InputMin / (inputDelta));
            float inputScale = 1f / (inputDelta * 0.01f);

            float hue        = filterParam.Hue / 360f;
            float saturation = filterParam.Saturation / 100f;
            float lightness  = filterParam.Lightness / 100f;

            Filter(dstTex, srcTex, (color) =>
            {
                Color c = color;

                c.r = Mathf.Clamp01(c.r * inputScale + inputBase);
                c.g = Mathf.Clamp01(c.g * inputScale + inputBase);
                c.b = Mathf.Clamp01(c.b * inputScale + inputBase);

                if (!NumberUtil.Equals(inputExp, 1f))
                {
                    c.r = Mathf.Pow(c.r, inputExp);
                    c.g = Mathf.Pow(c.g, inputExp);
                    c.b = Mathf.Pow(c.b, inputExp);
                }

                Vector4 hsl = ColorUtil.RGBToHsl(c);
                hsl.x       = (hsl.x + hue) % 1f;
                hsl.y      *= saturation;
                hsl.z      *= lightness;
                c           = ColorUtil.HslToRGB(hsl);

                c.r = c.r * outputScale + outputBase;
                c.g = c.g * outputScale + outputBase;
                c.b = c.b * outputScale + outputBase;
                return(c);
            });
        }
コード例 #16
0
ファイル: Point.cs プロジェクト: pashcovich/sparrow-sharp
        /// <summary>
        /// Determines whether the specified Point's X and Y values is equal to the current Point with
        /// with a small epsilon error margin.
        /// </summary>
        public bool Equals(Point other)
        {
            if (other == this)
            {
                return(true);
            }

            if (other == null)
            {
                return(false);
            }

            return(NumberUtil.Equals(X, other.X) && NumberUtil.Equals(Y, other.Y));
        }
コード例 #17
0
ファイル: Rectangle.cs プロジェクト: pashcovich/sparrow-sharp
        /// <summary>
        /// Determines whether this instance is equal the specified other with a small Epsilon error margin.
        /// </summary>
        public bool IsEqual(Rectangle other)
        {
            if (other == this)
            {
                return(true);
            }
            if (other == null)
            {
                return(false);
            }

            return(NumberUtil.Equals(X, other.X) &&
                   NumberUtil.Equals(Y, other.Y) &&
                   NumberUtil.Equals(Width, other.Width) &&
                   NumberUtil.Equals(Height, other.Height));
        }
コード例 #18
0
        private bool DrawTextField(float val, ref float editedVal)
        {
            var txt       = val.ToString("F3");
            var editedTxt = GUILayout.TextField(txt, uiParams.textStyleSC, optInputWidth);

            if (txt == editedTxt)
            {
                return(false);                  // 直接書き換えられたケース
            }
            if (!float.TryParse(editedTxt, out editedVal))
            {
                return(false);
            }

            return(!NumberUtil.Equals(val, editedVal));
        }
コード例 #19
0
        public void TestRotate()
        {
            identMatrix.Rotate((float)Math.PI / 2.0f);
            Point point  = Point.Create(10, 0);
            Point rPoint = identMatrix.TransformPoint(point);

            Assert.IsTrue(NumberUtil.Equals(0, rPoint.X), "wrong X value " + rPoint.X);
            Assert.IsTrue(NumberUtil.Equals(10, rPoint.Y), "wrong Y value " + rPoint.Y);

            identMatrix.Identity();
            identMatrix.Rotate((float)Math.PI);
            point.Y = 20;
            rPoint  = identMatrix.TransformPoint(point);
            Assert.IsTrue(NumberUtil.Equals(-10, rPoint.X), "wrong X value " + rPoint.X);
            Assert.IsTrue(NumberUtil.Equals(-20, rPoint.Y), "wrong Y value " + rPoint.Y);
        }
コード例 #20
0
//        public void ReflectTo(Material m) {
//            m.SetFloat("_SetManualRenderQueue", renderQueue.val);
//            m.renderQueue = (int)renderQueue.val;
//
//            if (type1.hasColor) {
//                m.SetColor(PROP_COLOR, color.val.Value);
//            }
//            if (type1.isLighted) {
//                m.SetColor(PROP_SHADOWC, shadowColor.val.Value);
//                m.SetFloat("_Shininess", shininess.val);
//            }
//            if (type1.isOutlined) {
//                m.SetColor(PROP_OUTLINEC, outlineColor.val.Value);
//                m.SetFloat("_OutlineWidth", outlineWidth.val);
//            }
//            if (type1.isToony) {
//                m.SetColor(PROP_RIMC, rimColor.val.Value);
//                m.SetFloat("_RimPower", rimPower.val);
//                m.SetFloat("_RimShift", rimShift.val);
//            }
//            if (type1.isHair) {
//                m.SetFloat("_HiRate", hiRate.val);
//                m.SetFloat("_HiPow", hiPow.val);
//            }
//            if (type1.isHair) {
//                m.SetFloat("_HiRate", hiRate.val);
//                m.SetFloat("_HiPow", hiPow.val);
//            }
//            if (type1.hasFloat1) {
//                m.SetFloat("_FloatValue1", floatVal1.val);
//            }
//            if (type1.hasFloat2) {
//                m.SetFloat("_FloatValue2", floatVal2.val);
//            }
//            if (type1.hasFloat3) {
//                m.SetFloat("_FloatValue3", floatVal3.val);
//            }
//            if (type1.hasCutoff) {
//                m.SetFloat("_Cutoff", cutoff.val);
//            }
//        }
        public bool hasChanged(ACCMaterial mate)
        {
            // 同一シェーダを想定
            for (int i = 0; i < editColors.Length; i++)
            {
                if (this.editColors[i].val != mate.editColors[i].val)
                {
                    return(true);
                }
            }
            for (int i = 0; i < editVals.Length; i++)
            {
                if (!NumberUtil.Equals(this.editVals[i].val, mate.editVals[i].val))
                {
                    return(true);
                }
            }
            return(false);
        }
コード例 #21
0
        public void TestBounds()
        {
            Quad quad = new Quad(10, 20);

            quad.X        = -10;
            quad.Y        = 10;
            quad.Rotation = NumberUtil.PIHALF;
            Rectangle bounds = quad.Bounds;

            Assert.IsTrue(NumberUtil.Equals(-30, bounds.X), "wrong bounds.x: " + bounds.X);
            Assert.IsTrue(NumberUtil.Equals(10, bounds.Y), "wrong bounds.y: " + bounds.Y);
            Assert.IsTrue(NumberUtil.Equals(20, bounds.Width), "wrong bounds.width: " + bounds.Width);
            Assert.IsTrue(NumberUtil.Equals(10, bounds.Height), "wrong bounds.height: " + bounds.Height);

            bounds = quad.BoundsInSpace(quad);
            Assert.IsTrue(NumberUtil.Equals(0, bounds.X), "wrong inner bounds.x: " + bounds.X);
            Assert.IsTrue(NumberUtil.Equals(0, bounds.Y), "wrong inner bounds.y: " + bounds.Y);
            Assert.IsTrue(NumberUtil.Equals(10, bounds.Width), "wrong inner bounds.width: " + bounds.Width);
            Assert.IsTrue(NumberUtil.Equals(20, bounds.Height), "wrong innter bounds.height: " + bounds.Height);
        }
コード例 #22
0
ファイル: Matrix.cs プロジェクト: pashcovich/sparrow-sharp
 public bool IsEqual(Matrix other)
 {
     if (other == this)
     {
         return(true);
     }
     else if (other == null)
     {
         return(false);
     }
     else
     {
         return(NumberUtil.Equals(A, other.A) &&
                NumberUtil.Equals(B, other.B) &&
                NumberUtil.Equals(C, other.C) &&
                NumberUtil.Equals(D, other.D) &&
                NumberUtil.Equals(Tx, other.Tx) &&
                NumberUtil.Equals(Ty, other.Ty));
     }
 }
コード例 #23
0
        internal void ShowCheckBox(string label, EditValue edit, Action <float> func)
        {
            GUILayout.BeginHorizontal();
            try {
                GUILayout.Label(label, uiParams.lStyle, optItemHeight);

                GUILayout.Space(uiParams.marginL);
                var val  = edit.val;
                var cont = NumberUtil.Equals(val, 0f)
                    ? ResourceHolder.Instance.Checkoff
                    : ResourceHolder.Instance.Checkon;
                if (!GUILayout.Button(cont, bStyleCenter, GUILayout.Width(50)))
                {
                    return;
                }

                val = 1 - val;
                edit.Set(val);
                func(val);
            } finally {
                GUILayout.EndHorizontal();
            }
        }
コード例 #24
0
        // Token: 0x06000139 RID: 313 RVA: 0x0000C670 File Offset: 0x0000A870
        public void Init(ACCMaterial edited)
        {
            this.editedMat = edited;
            if (!this.onlyModel && !string.IsNullOrEmpty(this.filename))
            {
                LogUtil.Debug(new object[]
                {
                    "load material file",
                    this.filename
                });
                this.srcMat        = ACCMaterialEx.Load(this.filename);
                this.shaderChanged = (this.editedMat.type != this.srcMat.type);
            }
            if (edited.type.isTrans)
            {
                if (Math.Abs(edited.renderQueue.val - 2000f) < 0.01f)
                {
                    this.needPmat = false;
                }
                else
                {
                    this.needPmat = true;
                    string matName     = (this.srcMat != null) ? this.srcMat.name2 : edited.name;
                    float  renderQueue = MaterialUtil.GetRenderQueue(matName);
                    if (renderQueue < 0f)
                    {
                        this.needPmatChange = true;
                    }
                    LogUtil.DebugF("render queue: src={0}, edited={1}", new object[]
                    {
                        renderQueue,
                        edited.renderQueue
                    });
                    this.needPmatChange |= !NumberUtil.Equals(edited.renderQueue.val, renderQueue, 0.01f);
                    this.pmatExport      = this.needPmatChange;
                }
            }
            if (!this.shaderChanged && this.srcMat != null)
            {
                this.hasParamChanged = this.editedMat.HasChanged(this.srcMat);
            }
            this.editname = this.editedMat.material.name;
            Maid currentMaid = MaidHolder.Instance.CurrentMaid;

            foreach (ShaderPropTex shaderPropTex in this.editedMat.type.texProps)
            {
                LogUtil.Debug(new object[]
                {
                    "propName:",
                    shaderPropTex.key
                });
                Texture texture = this.editedMat.material.GetTexture(shaderPropTex.propId);
                TextureModifier.FilterParam filter = ACCTexturesView.GetFilter(currentMaid, this.slotName, this.editedMat.material, shaderPropTex.propId);
                bool         flag  = filter != null && !filter.HasNotChanged();
                bool         flag2 = false;
                ACCTextureEx acctextureEx;
                if (texture != null && this.srcMat != null && this.srcMat.texDic.TryGetValue(shaderPropTex.key, out acctextureEx))
                {
                    flag2 = (acctextureEx.editname != texture.name);
                }
                TargetTexture value = new TargetTexture(flag, flag2, texture)
                {
                    filter = filter
                };
                this.texDic[shaderPropTex.key] = value;
                this.hasTexColorChanged        = (this.hasTexColorChanged || flag);
                this.hasTexFileChanged         = (this.hasTexFileChanged || flag2);
            }
            LogUtil.Debug(new object[]
            {
                "target material initialized"
            });
        }
コード例 #25
0
        public void Init(ACCMaterial edited)
        {
            editedMat = edited;

            // ファイルからマテリアル情報をロード
            if (onlyModel)
            {
                // modelファイルからマテリアルのロード
            }
            else if (!string.IsNullOrEmpty(filename))
            {
                LogUtil.Debug("load material file", filename);
                srcMat        = ACCMaterialEx.Load(filename);
                shaderChanged = (editedMat.type != srcMat.type);
            }

            // pmat チェック
            //  透過型のみを対象とし、
            //     1. マテリアル名に対応するpmatが存在しない場合
            //     2. renderQueueが変更されている場合
            if (edited.type.isTrans)
            {
                // renderqueueがデフォルト値であれば変更不要
                if (Math.Abs(edited.renderQueue.val - 2000) < 0.01f)
                {
                    needPmat = false;
                }
                else
                {
                    needPmat = true;

                    var matName = (srcMat != null)? srcMat.name2 : edited.name;
                    var srcRq   = MaterialUtil.GetRenderQueue(matName);
                    // 既存のマテリアル名に対応するpmatが存在しない => 変更必要
                    if (srcRq < 0)
                    {
                        needPmatChange = true;
                    }
                    LogUtil.DebugF("render queue: src={0}, edited={1}", srcRq, edited.renderQueue);

                    needPmatChange |= !NumberUtil.Equals(edited.renderQueue.val, srcRq, 0.01f);
                    pmatExport      = needPmatChange;
                }
            }

            if (!shaderChanged)
            {
                // TODO modelロードでsrcMatを作成した場合は条件削除可能
                if (srcMat != null)
                {
                    hasParamChanged = editedMat.HasChanged(srcMat);
                }
            }

            editname = editedMat.material.name;
            var maid = MaidHolder.Instance.CurrentMaid;

            // テクスチャの変更フラグチェック
            foreach (var texProp in editedMat.type.texProps)
            {
                //foreach (string propName in editedMat.type1.texPropNames) {
                LogUtil.Debug("propName:", texProp.key);

                var tex          = editedMat.material.GetTexture(texProp.propId);
                var filter       = ACCTexturesView.GetFilter(maid, slotName, editedMat.material, texProp.propId);
                var colorChanged = (filter != null) && !filter.HasNotChanged();
                var fileChanged  = false;
                if (tex != null && srcMat != null)
                {
                    ACCTextureEx baseTex;
                    if (srcMat.texDic.TryGetValue(texProp.key, out baseTex))
                    {
                        fileChanged = (baseTex.editname != tex.name);
                    }
                }

                var trgtTex = new TargetTexture(colorChanged, fileChanged, tex)
                {
                    filter = filter
                };
                texDic[texProp.key] = trgtTex;
                hasTexColorChanged |= colorChanged;
                hasTexFileChanged  |= fileChanged;
            }
            LogUtil.Debug("target material initialized");
        }
コード例 #26
0
        private bool DrawSliders(string label, ref Vector2 val, float min, float max,
                                 Func <Vector2> GetDefault, bool useLog = false)
        {
            var changed   = false;
            var sliderMax = (useLog) ? Mathf.Log10(max) : max;
            var sliderMin = (useLog) ? Mathf.Log10(min) : min;

            GUILayout.BeginHorizontal();
            try {
                GUILayout.Label(label, uiParams.lStyleS, optLabelWidth);
                var editedVal = val.x;
                if (DrawTextField(val.x, ref editedVal))
                {
                    if (editedVal > max)
                    {
                        editedVal = max;
                    }
                    else if (editedVal < min)
                    {
                        editedVal = min;
                    }
                    val.x   = editedVal;
                    changed = true;
                }

                GUILayout.BeginVertical();
                GUILayout.Space(sliderMargin);
                var srcVal  = useLog ? Mathf.Log10(val.x) : val.x;
                var slidVal = GUILayout.HorizontalSlider(srcVal, sliderMin, sliderMax, GUILayout.ExpandWidth(true));
                GUILayout.EndVertical();
                if (!NumberUtil.Equals(srcVal, slidVal))
                {
                    val.x   = useLog ? Mathf.Pow(10f, slidVal) : slidVal;
                    changed = true;
                }
            } finally {
                GUILayout.EndHorizontal();
            }

            GUILayout.BeginHorizontal();
            try {
                var editedVal = val.y;
                if (GUILayout.Button("reset", uiParams.bStyleSC, optLabelWidth))
                {
                    val     = GetDefault();
                    changed = true;
                }
                if (DrawTextField(val.y, ref editedVal))
                {
                    if (editedVal > max)
                    {
                        editedVal = max;
                    }
                    else if (editedVal < min)
                    {
                        editedVal = min;
                    }
                    val.y   = editedVal;
                    changed = true;
                }

                GUILayout.BeginVertical();
                GUILayout.Space(sliderMargin);
                var srcVal  = useLog ? Mathf.Log10(val.y) : val.y;
                var slidVal = GUILayout.HorizontalSlider(srcVal, sliderMin, sliderMax, GUILayout.ExpandWidth(true));
                GUILayout.EndVertical();
                if (!NumberUtil.Equals(srcVal, slidVal))
                {
                    val.y   = useLog ? Mathf.Pow(10f, slidVal) : slidVal;
                    changed = true;
                }
            } finally {
                GUILayout.EndHorizontal();
            }


            return(changed);
        }
コード例 #27
0
 bool CheckMatrixValues(Matrix matrix, float a, float b, float c, float d, float tx, float ty)
 {
     return(NumberUtil.Equals(a, matrix.A) && NumberUtil.Equals(b, matrix.B) &&
            NumberUtil.Equals(b, matrix.B) && NumberUtil.Equals(c, matrix.C) &&
            NumberUtil.Equals(tx, matrix.Tx) && NumberUtil.Equals(ty, matrix.Ty));
 }
コード例 #28
0
 // Token: 0x060000DB RID: 219 RVA: 0x0000AD70 File Offset: 0x00008F70
 public bool HasChanged(ACCMaterial mate)
 {
     return(this.editColors.Where((EditColor t, int i) => t.val != mate.editColors[i].val).Any <EditColor>() || this.editVals.Where((EditValue t, int i) => !NumberUtil.Equals(t.val, mate.editVals[i].val, 0.001f)).Any <EditValue>());
 }
コード例 #29
0
        // Token: 0x06000373 RID: 883 RVA: 0x0001F024 File Offset: 0x0001D224
        private bool DrawSliders(string label, ref Vector2 val, float min, float max, Func <Vector2> GetDefault, bool useLog = false)
        {
            bool  result     = false;
            float rightValue = useLog ? Mathf.Log10(max) : max;
            float leftValue  = useLog ? Mathf.Log10(min) : min;

            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
            try
            {
                GUILayout.Label(label, ACCTexturesView.uiParams.lStyleS, new GUILayoutOption[]
                {
                    ACCTexturesView.optLabelWidth
                });
                float num = val.x;
                if (this.DrawTextField(val.x, ref num))
                {
                    if (num > max)
                    {
                        num = max;
                    }
                    else if (num < min)
                    {
                        num = min;
                    }
                    val.x  = num;
                    result = true;
                }
                GUILayout.BeginVertical(new GUILayoutOption[0]);
                GUILayout.Space(ACCTexturesView.sliderMargin);
                float num2 = useLog ? Mathf.Log10(val.x) : val.x;
                float num3 = GUILayout.HorizontalSlider(num2, leftValue, rightValue, new GUILayoutOption[]
                {
                    GUILayout.ExpandWidth(true)
                });
                GUILayout.EndVertical();
                if (!NumberUtil.Equals(num2, num3, 0.001f))
                {
                    val.x  = (useLog ? Mathf.Pow(10f, num3) : num3);
                    result = true;
                }
            }
            finally
            {
                GUILayout.EndHorizontal();
            }
            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
            try
            {
                float num4 = val.y;
                if (GUILayout.Button("reset", ACCTexturesView.uiParams.bStyleSC, new GUILayoutOption[]
                {
                    ACCTexturesView.optLabelWidth
                }))
                {
                    val    = GetDefault();
                    result = true;
                }
                if (this.DrawTextField(val.y, ref num4))
                {
                    if (num4 > max)
                    {
                        num4 = max;
                    }
                    else if (num4 < min)
                    {
                        num4 = min;
                    }
                    val.y  = num4;
                    result = true;
                }
                GUILayout.BeginVertical(new GUILayoutOption[0]);
                GUILayout.Space(ACCTexturesView.sliderMargin);
                float num5 = useLog ? Mathf.Log10(val.y) : val.y;
                float num6 = GUILayout.HorizontalSlider(num5, leftValue, rightValue, new GUILayoutOption[]
                {
                    GUILayout.ExpandWidth(true)
                });
                GUILayout.EndVertical();
                if (!NumberUtil.Equals(num5, num6, 0.001f))
                {
                    val.y  = (useLog ? Mathf.Pow(10f, num6) : num6);
                    result = true;
                }
            }
            finally
            {
                GUILayout.EndHorizontal();
            }
            return(result);
        }
コード例 #30
0
 public bool HasChanged(ACCMaterial mate)
 {
     // 同一シェーダを想定
     return(editColors.Where((t, i) => t.val != mate.editColors[i].val).Any() ||
            editVals.Where((t, i) => !NumberUtil.Equals(t.val, mate.editVals[i].val)).Any());
 }