Skip to content

Commit 60197fd

Browse files
committed
* Only fetch editable nodes if edit tools are enabled.
* Always disable checkboxes in UI and grey out if not sensible in the current context.
1 parent 27b07de commit 60197fd

File tree

4 files changed

+33
-18
lines changed

4 files changed

+33
-18
lines changed

Plugins/HoudiniEngineUnity/Editor/UI/HEU_HoudiniAssetUI.cs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -505,18 +505,14 @@ private void DrawAssetOptions(HEU_HoudiniAsset asset, SerializedObject assetObje
505505

506506
EditorGUILayout.EndHorizontal();
507507

508-
if (asset.NumAttributeStores() > 0)
509-
{
510-
HEU_EditorUI.DrawPropertyField(assetObject, "_editableNodesToolsEnabled",
511-
"Enable Editable Node Tools",
512-
"Displays Editable Node Tools and generates the node's geometry, if asset has editable nodes.");
513-
}
508+
HEU_EditorUI.DrawPropertyField(assetObject, "_editableNodesToolsEnabled",
509+
"Enable Editable Node Tools",
510+
"Displays Editable Node Tools and generates the node's geometry, if asset has editable nodes.");
514511

515-
if (asset.NumHandles() > 0)
516-
{
512+
GUI.enabled = (asset.NumHandles() > 0);
517513
HEU_EditorUI.DrawPropertyField(assetObject, "_handlesEnabled", "Enable Handles",
518514
"Creates Houdini Handles if asset has them.");
519-
}
515+
GUI.enabled = true;
520516

521517
EditorGUILayout.Space();
522518

Plugins/HoudiniEngineUnity/Scripts/Asset/HEU_HoudiniAsset.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3876,7 +3876,7 @@ private void UpdateAllObjectNodes(HEU_SessionBase session)
38763876
private HEU_ObjectNode CreateObjectNode(HEU_SessionBase session, ref HAPI_ObjectInfo objectInfo, ref HAPI_Transform objectTranform)
38773877
{
38783878
HEU_ObjectNode objectNode = ScriptableObject.CreateInstance<HEU_ObjectNode>();
3879-
objectNode.Initialize(session, objectInfo, objectTranform, this, _useOutputNodes);
3879+
objectNode.Initialize(session, objectInfo, objectTranform, this, _useOutputNodes, _editableNodesToolsEnabled);
38803880
return objectNode;
38813881
}
38823882

Plugins/HoudiniEngineUnity/Scripts/Asset/HEU_ObjectNode.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ private void SyncWithObjectInfo(HEU_SessionBase session)
237237
}
238238

239239
internal void Initialize(HEU_SessionBase session, HAPI_ObjectInfo objectInfo, HAPI_Transform objectTranform,
240-
HEU_HoudiniAsset parentAsset, bool bUseOutputNodes)
240+
HEU_HoudiniAsset parentAsset, bool bUseOutputNodes, bool bGetEditableNodes)
241241
{
242242
_objectInfo = objectInfo;
243243
_objectTransform = objectTranform;
@@ -248,7 +248,7 @@ internal void Initialize(HEU_SessionBase session, HAPI_ObjectInfo objectInfo, HA
248248
// Translate transform to Unity (TODO)
249249
List<HAPI_GeoInfo> geoInfos = new List<HAPI_GeoInfo>();
250250

251-
HEU_HAPIUtility.GatherAllAssetGeoInfos(session, parentAsset.AssetInfo, objectInfo, bUseOutputNodes,
251+
HEU_HAPIUtility.GatherAllAssetGeoInfos(session, parentAsset.AssetInfo, objectInfo, bUseOutputNodes, bGetEditableNodes,
252252
ref geoInfos);
253253
int numGeoInfos = geoInfos.Count;
254254
for (int i = 0; i < numGeoInfos; ++i)
@@ -418,9 +418,15 @@ internal void UpdateObject(HEU_SessionBase session, bool bForceUpdate)
418418

419419

420420
bool useOutputNodes = true;
421-
if (ParentAsset) useOutputNodes = ParentAsset.UseOutputNodes;
421+
bool getEditableNodes = true;
422422

423-
HEU_HAPIUtility.GatherAllAssetGeoInfos(session, ParentAsset.AssetInfo, _objectInfo, useOutputNodes,
423+
if (ParentAsset)
424+
{
425+
useOutputNodes = ParentAsset.UseOutputNodes;
426+
getEditableNodes = ParentAsset.EditableNodesToolsEnabled;
427+
}
428+
429+
HEU_HAPIUtility.GatherAllAssetGeoInfos(session, ParentAsset.AssetInfo, _objectInfo, useOutputNodes, getEditableNodes,
424430
ref postCookGeoInfos);
425431

426432
// Now for each geo node that are present after cooking, we check if its

Plugins/HoudiniEngineUnity/Scripts/Core/HEU_HAPIUtility.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1535,8 +1535,12 @@ public static bool GetOutputIndex(HEU_SessionBase session, HAPI_NodeId nodeId, r
15351535
return false;
15361536
}
15371537

1538-
static internal void GatherAllAssetGeoInfos(HEU_SessionBase session, HAPI_AssetInfo assetInfo, HAPI_ObjectInfo objectInfo,
1539-
bool bUseOutputNodes, ref List<HAPI_GeoInfo> outGeoInfos)
1538+
static internal void GatherAllAssetGeoInfos(HEU_SessionBase session,
1539+
HAPI_AssetInfo assetInfo,
1540+
HAPI_ObjectInfo objectInfo,
1541+
bool bUseOutputNodes,
1542+
bool bGetEditableNodes,
1543+
ref List<HAPI_GeoInfo> outGeoInfos)
15401544
{
15411545
if (outGeoInfos == null) outGeoInfos = new List<HAPI_GeoInfo>();
15421546

@@ -1564,8 +1568,17 @@ static internal void GatherAllAssetGeoInfos(HEU_SessionBase session, HAPI_AssetI
15641568

15651569
// Get editable nodes, cook em, then create geo nodes for them
15661570
HAPI_NodeId[] editableNodes = null;
1567-
HEU_SessionManager.GetComposedChildNodeList(session, assetInfo.nodeId, (int)HAPI_NodeType.HAPI_NODETYPE_SOP,
1568-
(int)HAPI_NodeFlags.HAPI_NODEFLAGS_EDITABLE, true, out editableNodes, false);
1571+
if (bGetEditableNodes)
1572+
{
1573+
HEU_SessionManager.GetComposedChildNodeList(session, assetInfo.nodeId, (int)HAPI_NodeType.HAPI_NODETYPE_SOP,
1574+
(int)HAPI_NodeFlags.HAPI_NODEFLAGS_EDITABLE, true, out editableNodes, false);
1575+
1576+
if (editableNodes == null || editableNodes.Length == 0)
1577+
{
1578+
HEU_Logger.LogWarning("Edit tools are enabled but no editable nodes were found in the HDA. Ensure the HDA is unlocked in Houdini and recook.");
1579+
}
1580+
}
1581+
15691582
if (editableNodes != null)
15701583
{
15711584
foreach (HAPI_NodeId editNodeID in editableNodes)

0 commit comments

Comments
 (0)