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); } }
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); } }
public override void OnInspectorGUI() { EditorGUILayout.HelpBox(info, MessageType.Info); if (GUILayout.Button("Force Re-apply Colors")) { FacePaintData fpd = (FacePaintData)target; fpd.Setup(); } }
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; }
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); }
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(); } }
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); } }
public virtual void OnSceneGUI(FacePaint fp, FacePaintData fpData, FacePaintSceneGUIData data) { }
public virtual void OnPluginPanel(FacePaint fp, FacePaintData fpData) { UnityEditor.EditorGUILayout.LabelField("No tools", UnityEditor.EditorStyles.miniBoldLabel); }
public virtual void OnModesToolbar(FacePaint fp, FacePaintData fpData) { }
public virtual void OnChannelToolbar(FacePaint fp, FacePaintData fpData) { }
public virtual void OnPaletteToolbar(FacePaint fp, FacePaintData fpData, ReadOnlyCollection <Color> palette) { }
public virtual void OnColorToolbar(FacePaint fp, FacePaintData fpData) { }
public override void OnPluginPanel(FacePaint fp, FacePaintData fpData) { _collapse = EditorGUILayout.Toggle("Collapse Output", _collapse); }