Skip to content

Commit 10c4a6c

Browse files
committed
grad2
1 parent 622a936 commit 10c4a6c

File tree

5 files changed

+177
-49
lines changed

5 files changed

+177
-49
lines changed

Packages/src/Editor/UIEffectEditor.cs

+6
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,8 @@ public class UIEffect2Editor : Editor
6464
private SerializedProperty _gradationColor1;
6565
private SerializedProperty _gradationColor2;
6666
private SerializedProperty _gradationGradient;
67+
private SerializedProperty _gradationOffset;
68+
private SerializedProperty _gradationScale;
6769

6870
private bool _expandOthers;
6971
private SerializedProperty _allowExtendVertex;
@@ -121,6 +123,8 @@ private void OnEnable()
121123
_gradationColor1 = serializedObject.FindProperty("m_GradationColor1");
122124
_gradationColor2 = serializedObject.FindProperty("m_GradationColor2");
123125
_gradationGradient = serializedObject.FindProperty("m_GradationGradient");
126+
_gradationOffset = serializedObject.FindProperty("m_GradationOffset");
127+
_gradationScale = serializedObject.FindProperty("m_GradationScale");
124128

125129
_allowExtendVertex = serializedObject.FindProperty("m_AllowExtendVertex");
126130
}
@@ -280,6 +284,8 @@ public void DrawProperties()
280284
break;
281285
}
282286

287+
EditorGUILayout.PropertyField(_gradationOffset);
288+
EditorGUILayout.PropertyField(_gradationScale);
283289
EditorGUI.indentLevel--;
284290
}
285291

Packages/src/Runtime/UIEffect.cs

+39
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,14 @@ public class UIEffect : UIEffectBase
147147
[SerializeField]
148148
private Gradient m_GradationGradient = new Gradient();
149149

150+
[Range(-1, 1)]
151+
[SerializeField]
152+
protected float m_GradationOffset = 0;
153+
154+
[Range(0.1f, 5)]
155+
[SerializeField]
156+
protected float m_GradationScale = 1;
157+
150158
[SerializeField]
151159
protected bool m_AllowExtendVertex = true;
152160

@@ -611,6 +619,28 @@ public Gradient gradationGradient
611619
}
612620
}
613621

622+
public float gradationOffset
623+
{
624+
get => m_GradationOffset;
625+
set
626+
{
627+
if (Mathf.Approximately(m_GradationOffset, value)) return;
628+
context.gradationOffset = m_GradationOffset = value;
629+
SetVerticesDirty();
630+
}
631+
}
632+
633+
public float gradationScale
634+
{
635+
get => m_GradationScale;
636+
set
637+
{
638+
if (Mathf.Approximately(m_GradationScale, value)) return;
639+
context.gradationScale = m_GradationScale = value;
640+
SetVerticesDirty();
641+
}
642+
}
643+
614644
public bool allowExtendVertex
615645
{
616646
get => m_AllowExtendVertex;
@@ -711,6 +741,8 @@ protected override void UpdateContext(UIEffectContext c)
711741
c.gradationColor1 = m_GradationColor1;
712742
c.gradationColor2 = m_GradationColor2;
713743
c.gradationGradient = m_GradationGradient;
744+
c.gradationOffset = m_GradationOffset;
745+
c.gradationScale = m_GradationScale;
714746
c.allowExtendVertex = m_AllowExtendVertex;
715747
}
716748

@@ -745,6 +777,11 @@ public override void SetRate(float rate, UIEffectTweener.CullingMask mask)
745777
{
746778
transitionRate = rate;
747779
}
780+
781+
if (gradationMode != GradationMode.None && 0 < (mask & UIEffectTweener.CullingMask.Gradiation))
782+
{
783+
gradationOffset = Mathf.Lerp(-1f, 1f, rate);
784+
}
748785
}
749786

750787
public override bool IsRaycastLocationValid(Vector2 sp, Camera eventCamera)
@@ -865,6 +902,8 @@ internal void CopyFrom(UIEffectContext c)
865902
m_GradationColor1 = c.gradationColor1;
866903
m_GradationColor2 = c.gradationColor2;
867904
m_GradationGradient = c.gradationGradient;
905+
m_GradationOffset = c.gradationOffset;
906+
m_GradationScale = c.gradationScale;
868907

869908
m_AllowExtendVertex = c.allowExtendVertex;
870909

Packages/src/Runtime/UIEffectContext.cs

+5-1
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ public class UIEffectContext
142142
public Color gradationColor2;
143143
public Gradient gradationGradient;
144144
public bool allowExtendVertex;
145+
public float gradationOffset;
146+
public float gradationScale;
145147

146148
public bool willModifyMaterial => samplingFilter != SamplingFilter.None
147149
|| transitionFilter != TransitionFilter.None
@@ -203,6 +205,8 @@ public void CopyFrom(UIEffectContext preset)
203205
gradationColor1 = preset.gradationColor1;
204206
gradationColor2 = preset.gradationColor2;
205207
gradationGradient = preset.gradationGradient;
208+
gradationOffset = preset.gradationOffset;
209+
gradationScale = preset.gradationScale;
206210

207211
allowExtendVertex = preset.allowExtendVertex;
208212
}
@@ -423,7 +427,7 @@ public void ModifyMesh(Graphic graphic, RectTransform transitionRoot, VertexHelp
423427

424428
// Apply gradation.
425429
GradientUtil.DoGradient(gradationMode, verts, gradationColor1, gradationColor2, gradationGradient,
426-
transitionRoot.rect);
430+
gradationOffset, gradationScale, transitionRoot.rect);
427431

428432
// Apply shadow.
429433
switch (shadowMode)

Packages/src/Runtime/UIEffectTweener.cs

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ public enum CullingMask
1414
Tone = 1 << 0,
1515
Color = 1 << 1,
1616
Sampling = 1 << 2,
17-
Transition = 1 << 3
17+
Transition = 1 << 3,
18+
Gradiation = 1 << 5
1819
}
1920

2021
public enum UpdateMode

0 commit comments

Comments
 (0)