Пример #1
0
 public override void OnPluginPanel(FacePaint fp, FacePaintData fpData)
 {
     _perPoly = EditorGUILayout.Toggle("Per Face", _perPoly);
     EditorGUILayout.LabelField("Ranges");
     _h = EditorGUILayout.Slider("Hue", _h, 0, 1);
     _s = EditorGUILayout.Slider("Sat", _s, 0, 1);
     _v = EditorGUILayout.Slider("Val", _v, 0, 1);
     _a = EditorGUILayout.Slider("Alpha", _a, 0, 1);
     if (GUILayout.Button("Randomise"))
     {
         Color[] c = fpData.GetColors();
         if (_perPoly)
         {
             int[] t = fpData.GetTris();
             for (int i = 0; i < (t.Length / 3); ++i)
             {
                 int j = i * 3;
                 c[t[j]] = c[t[j + 1]] = c[t[j + 2]] = Randomise(c[t[j]]);;
             }
         }
         else
         {
             for (int i = 0; i < c.Length; ++i)
             {
                 c[i] = Randomise(c[i]);
             }
         }
         fpData.SetColors(c);
     }
 }
Пример #2
0
        public override void OnPaletteToolbar(FacePaint fp, FacePaintData fpData, ReadOnlyCollection <Color> palette)
        {
            FacePaint_LUT_Settings data = fp.GetCustomSettings <FacePaint_LUT_Settings>(this);

            if (!data.useLut || !data.lutIsReadable)
            {
                return;
            }
            for (int i = 0; i < palette.Count; ++i)
            {
                Color c       = palette[i];
                float channel = c.r;
                if (fp.writeR)
                {
                    channel = c.r;
                }
                else if (fp.writeG)
                {
                    channel = c.g;
                }
                else if (fp.writeB)
                {
                    channel = c.b;
                }
                else if (fp.writeA)
                {
                    channel = c.a;
                }
                EditorGUI.DrawRect(
                    EditorGUILayout.GetControlRect(GUILayout.Width(44)),
                    Lookup(data.lut, channel)
                    );
                GUILayout.Space(5);
            }
        }
Пример #3
0
        public override void OnSceneGUI(FacePaint fp, FacePaintData fpData, FacePaintSceneGUIData data)
        {
            if (_collapse != _wasCollapse)
            {
                _last = null;
            }
            _wasCollapse = _collapse;

            bool triEvt = false;

            switch (data.evt)
            {
            case FacePaintSceneGUIData.SceneGUIEvent.HOVER_TRIS:
            case FacePaintSceneGUIData.SceneGUIEvent.M_DOWN:
            case FacePaintSceneGUIData.SceneGUIEvent.M_DRAG:
                triEvt = true;
                break;
            }

            // Work out whether event is duplicate of last
            if (_last != null && _collapse)
            {
                // If same event, don't print UNLESS triangle event
                if (_last.evt == data.evt)
                {
                    // If triangle event, check triangle has changed
                    if (triEvt)
                    {
                        // If triangle hasn't changed, don't print
                        if (_last.triHit == data.triHit)
                        {
                            return;
                        }
                    }
                    else
                    {
                        // If not triangle event, don't print
                        return;
                    }
                }
            }

            string log = "FacePaint Event: " + data.evt.ToString();

            if (triEvt)
            {
                var t = fpData.GetTris();
                log += "  T:" + data.triHit.ToString()
                       + " V:[" + t[data.vertsHit[0]].ToString() + ", "
                       + t[data.vertsHit[1]].ToString() + ", "
                       + t[data.vertsHit[1]].ToString() + "]";
            }
            Debug.Log(log);

            _last = data;
        }
Пример #4
0
        public override void OnChannelToolbar(FacePaint fp, FacePaintData fpData)
        {
            FacePaint_LUT_Settings data = fp.GetCustomSettings <FacePaint_LUT_Settings>(this);

            if (!data.useLut)
            {
                return;
            }

            fp.DrawPluginTitle();
            GUILayout.Label("Override", EditorStyles.miniLabel);
            GUILayout.FlexibleSpace();
            if (fp.DrawBtn("R", fp.writeR ? Color.red : Color.white, Color.white))
            {
                data.channel = 0;
            }
            if (fp.DrawBtn("G", fp.writeG ? Color.green : Color.white, Color.white))
            {
                data.channel = 1;
            }
            if (fp.DrawBtn("B", fp.writeB ? new Color(0.5f, 0.5f, 1) : Color.white, Color.white))
            {
                data.channel = 2;
            }
            if (fp.DrawBtn("A", fp.writeA ? Color.gray : Color.white, Color.white))
            {
                data.channel = 3;
            }

            bool r, g, b, a;

            r = g = b = a = false;
            switch (data.channel)
            {
            case 0:
                r = true;
                break;

            case 1:
                g = true;
                break;

            case 2:
                b = true;
                break;

            case 3:
                a = true;
                break;
            }
            fp.SetChannels(r, g, b, a);
        }
Пример #5
0
        public override void OnModesToolbar(FacePaint fp, FacePaintData fpData)
        {
            fp.DrawPluginTitle();
            FacePaint_LUT_Settings data = fp.GetCustomSettings <FacePaint_LUT_Settings>(this);

            if (data.lut == null)
            {
                GUILayout.Label("No LUT selected", EditorStyles.miniLabel);
                return;
            }
            data.useLut = fp.ToggleBtn("Use\nLUT", "", data.useLut);
            if (data.useLut)
            {
                Material m = fp.OverrideAssistShader(Shader.Find(ASSIST_SHADER));
                m.SetTexture("_LUT", data.lut);
                int channel = 0;
                if (fp.writeR)
                {
                    channel = 1;
                }
                else if (fp.writeG)
                {
                    channel = 2;
                }
                else if (fp.writeB)
                {
                    channel = 3;
                }
                else if (fp.writeA)
                {
                    channel = 4;
                }
                m.SetInt("_Mask", channel);
            }
            else
            {
                fp.OverrideAssistShader();
            }
        }
Пример #6
0
        public override void OnColorToolbar(FacePaint fp, FacePaintData fpData)
        {
            FacePaint_LUT_Settings data = fp.GetCustomSettings <FacePaint_LUT_Settings>(this);

            if (!data.useLut)
            {
                return;
            }
            if (data.lutIsReadable)
            {
                fp.DrawPluginTitle();
                GUILayout.Label("Result ", EditorStyles.miniLabel);
                EditorGUI.DrawRect(
                    EditorGUILayout.GetControlRect(GUILayout.Width(45)),
                    Lookup(data.lut, fp.activeChannel)
                    );
                GUILayout.FlexibleSpace();
            }
            else
            {
                EditorGUILayout.LabelField("!! LUT not readable in import settings", EditorStyles.miniLabel);
            }
        }
Пример #7
0
 public virtual void OnSceneGUI(FacePaint fp, FacePaintData fpData, FacePaintSceneGUIData data)
 {
 }
Пример #8
0
 public virtual void OnSettingsPanel(FacePaint fp)
 {
     UnityEditor.EditorGUILayout.LabelField("No settings", UnityEditor.EditorStyles.miniBoldLabel);
 }
Пример #9
0
 public virtual void OnPluginPanel(FacePaint fp, FacePaintData fpData)
 {
     UnityEditor.EditorGUILayout.LabelField("No tools", UnityEditor.EditorStyles.miniBoldLabel);
 }
Пример #10
0
 public virtual void OnModesToolbar(FacePaint fp, FacePaintData fpData)
 {
 }
Пример #11
0
 public virtual void OnChannelToolbar(FacePaint fp, FacePaintData fpData)
 {
 }
Пример #12
0
 public virtual void OnPaletteToolbar(FacePaint fp, FacePaintData fpData, ReadOnlyCollection <Color> palette)
 {
 }
Пример #13
0
 public virtual void OnColorToolbar(FacePaint fp, FacePaintData fpData)
 {
 }
Пример #14
0
        public override void OnSettingsPanel(FacePaint fp)
        {
            FacePaint_LUT_Settings data = fp.GetCustomSettings <FacePaint_LUT_Settings>(this);

            data.lut = EditorGUILayout.ObjectField("Texture", data.lut, typeof(Texture2D), false) as Texture2D;
        }
Пример #15
0
 public override void OnPluginPanel(FacePaint fp, FacePaintData fpData)
 {
     _collapse = EditorGUILayout.Toggle("Collapse Output", _collapse);
 }