Skip to content

Commit b7ee57c

Browse files
julienamsellemEvergreen
authored andcommitted
[VFX] Indeterminate state not updated and label size changing
### Jira UUM-68044 Steps to reproduce: 1. Import (or reproduce) attached VFX 2. Observe first computed value in UX of Add => Expected intermediate status with `-` Actual results <img src="https://jira.unity3d.com/secure/attachment/1415346/1415346_image-2024-03-26-17-42-08-042.png" width="500" /> Expected results <img src="https://jira.unity3d.com/secure/attachment/1415345/1415345_image-2024-03-26-17-42-55-937.png" width="500" /> ### Jira UUM-68140 Steps to reproduce: 1. Open VFX 2. Create Update Context 3. Create block Set Axis X 4. Open Inspector change axis to Axis Z 5. Observe weird alignment of UI components Actual results <img src="https://jira.unity3d.com/secure/attachment/1416292/1416292_image-2024-03-27-17-28-31-096.png" width="500" /> Expected results <img src="https://jira.unity3d.com/secure/attachment/1416298/1416298_image-2024-03-27-17-39-57-915.png" width="500" /> ![Video](https://jira.unity3d.com/secure/attachment/1416293/_moving_alignement.mp4) In this same bug another issue is raised: When unlinking an edge on a collapsed port, the previously linked port is not hidden ![Unity_rcHEhtGQOe](https://media.github.cds.internal.unity3d.com/user/4003/files/4afec272-efce-4a83-8341-a5a6ddc7c323)
1 parent 119670f commit b7ee57c

File tree

6 files changed

+22
-31
lines changed

6 files changed

+22
-31
lines changed

Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXNodeUI.cs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -166,9 +166,10 @@ public virtual void OnControllerChanged(ref ControllerChangedEvent e)
166166

167167
protected virtual bool HasPosition() => true;
168168

169-
protected void SyncSettings()
169+
private bool SyncSettings()
170170
{
171171
Profiler.BeginSample("VFXNodeUI.SyncSettings");
172+
var hasChanged = false;
172173
var settings = controller.settings;
173174
var graphSettings = controller.model.GetSettings(false, VFXSettingAttribute.VisibleFlags.InGraph).ToArray();
174175

@@ -179,6 +180,7 @@ protected void SyncSettings()
179180
{
180181
propertyRM.RemoveFromHierarchy();
181182
m_Settings.Remove(propertyRM);
183+
hasChanged = true;
182184
}
183185
}
184186

@@ -191,6 +193,7 @@ protected void SyncSettings()
191193
var setting = settings.Single(x => string.Compare(x.name, vfxSetting.field.Name, StringComparison.OrdinalIgnoreCase) == 0);
192194
var propertyRM = AddSetting(setting);
193195
settingsContainer.Insert(i, propertyRM);
196+
hasChanged = true;
194197
}
195198
}
196199

@@ -215,18 +218,17 @@ protected void SyncSettings()
215218
}
216219

217220
Profiler.EndSample();
221+
return hasChanged;
218222
}
219223

220-
void SyncAnchors()
224+
bool SyncAnchors()
221225
{
222226
Profiler.BeginSample("VFXNodeUI.SyncAnchors");
223227
var hasResync = SyncAnchors(controller.inputPorts, inputContainer, controller.HasActivationAnchor);
224228
hasResync |= SyncAnchors(controller.outputPorts, outputContainer, false);
225-
if (hasResync)
226-
{
227-
RefreshLayout();
228-
}
229229
Profiler.EndSample();
230+
231+
return hasResync;
230232
}
231233

232234
bool SyncAnchors(ReadOnlyCollection<VFXDataAnchorController> ports, VisualElement container, bool hasActivationPort)
@@ -373,15 +375,18 @@ protected virtual void SelfChange()
373375

374376
base.expanded = controller.expanded;
375377

376-
SyncSettings();
377-
SyncAnchors();
378+
var needRefresh = SyncSettings();
379+
needRefresh |= SyncAnchors();
378380
Profiler.BeginSample("VFXNodeUI.SelfChange The Rest");
379381
RefreshExpandedState();
380382
Profiler.EndSample();
381383
Profiler.EndSample();
382384

383-
384385
UpdateCollapse();
386+
if (needRefresh)
387+
{
388+
EditorApplication.delayCall += RefreshLayout;
389+
}
385390
}
386391

387392
protected virtual VFXDataAnchor InstantiateDataAnchor(VFXDataAnchorController ctrl, VFXNodeUI node)

Packages/com.unity.visualeffectgraph/Editor/GraphView/Elements/VFXOperatorUI.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace UnityEditor.VFX.UI
66
{
77
class VFXOperatorUI : VFXNodeUI
88
{
9-
private const float defaultOperatorLabelWidth = 30f;
9+
private const float defaultOperatorLabelWidth = 10f;
1010

1111
VisualElement m_EditButton;
1212
VisualElement m_EditContainer;

Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Controller/VFXViewController.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,8 @@ private bool RecreateNodeEdges()
390390
foreach (var node in nodeToUpdate)
391391
{
392392
node.UpdateAllEditable();
393+
// Mark model as changed since it's connections have changed
394+
OnObjectModified(node.model, false);
393395
}
394396

395397
return nodeToUpdate.Any();

Packages/com.unity.visualeffectgraph/Editor/GraphView/Views/Properties/NumericPropertiesRM.cs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,9 @@ public override float GetPreferredControlWidth()
2121

2222
protected override void UpdateIndeterminate()
2323
{
24-
if (field is BaseField<float> floatField)
24+
if (field is IMixedValueSupport mixedValueSupport)
2525
{
26-
floatField.showMixedValue = indeterminate;
27-
}
28-
else if (field is BaseField<int> intField)
29-
{
30-
intField.showMixedValue = indeterminate;
26+
mixedValueSupport.showMixedValue = indeterminate;
3127
}
3228

3329
if (m_Slider != null)
@@ -54,7 +50,7 @@ public override INotifyValueChanged<U> CreateField()
5450
VisualElement createdField;
5551
if (!HasValidRange(range))
5652
{
57-
createdField = CreateSimpleField(ObjectNames.NicifyVariableName(provider.name));
53+
createdField = CreateSimpleField(string.IsNullOrEmpty(provider.name) ? " " : ObjectNames.NicifyVariableName(provider.name));
5854
m_TextField = createdField.Q<TextElement>(null, "unity-text-element__selectable");
5955
if (m_TextField != null)
6056
{

Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/PropertyRM.uss

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,6 @@
133133
-unity-text-align: middle-left;
134134
}
135135

136-
/*.propertyrm .fieldContainer > *
137-
{
138-
flex:1 1 auto;
139-
}*/
140-
141136
.propertyrm:disabled
142137
{
143138
opacity: 1;
@@ -156,10 +151,10 @@
156151
padding-left:0;
157152
}
158153

159-
.propertyrm .fieldContainer, .propertyrm .unity-float-field
154+
.propertyrm .fieldContainer
160155
{
161156
flex-direction:row;
162-
flex:1 1 auto;
157+
flex:1 0 auto;
163158
height: auto;
164159
margin-top: 0;
165160
margin-bottom: 0;
@@ -244,12 +239,6 @@ ColorPropertyRM .unity-float-field
244239
flex: 1 0 auto;
245240
}
246241

247-
FloatPropertyRM .unity-float-field
248-
{
249-
align-self:flex-end;
250-
flex:1 0 auto;
251-
}
252-
253242
IntPropertyRM .unity-integer-field
254243
{
255244
align-self:flex-end;

Packages/com.unity.visualeffectgraph/Editor/UIResources/uss/VFXDataAnchor.uss

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,6 @@ VFXContextUI #output .VFXDataAnchor.port #connector
8585
padding-right: 0;
8686
margin-left: 0;
8787
flex-direction: row;
88-
/*flex-direction: row-reverse;*/
8988
}
9089

9190
.VFXDataAnchor.Output #type {

0 commit comments

Comments
 (0)