public InitializeFromHoudini ( HoudiniEngineUnity.HEU_SessionBase session, HAPI_NodeId nodeID, string nodeName, string filePath ) : void | ||
session | HoudiniEngineUnity.HEU_SessionBase | |
nodeID | HAPI_NodeId | |
nodeName | string | |
filePath | string | |
return | void |
/// <summary> /// Load a NodeSync file and create its construct in Unity. /// </summary> /// <param name="filePath">Path to the NodeSync file</param> /// <param name="name">Name of the NodeSync node</param> void CreateNodeSyncFromFile(string filePath, string name) { HEU_SessionBase session = HEU_SessionManager.GetDefaultSession(); if (session == null || !session.IsSessionValid()) { return; } HAPI_NodeId parentNodeID = -1; string nodeName = name; HAPI_NodeId newNodeID = -1; // This loads the node network from file, and returns the node that was created // with newNodeID. It is either a SOP object, or a subnet object. // The actual loader (HEU_ThreadedTaskLoadGeo) will deal with either case. if (!session.LoadNodeFromFile(filePath, parentNodeID, nodeName, true, out newNodeID)) { Log(string.Format("Failed to load node network from file: {0}.", filePath)); return; } // Wait until finished if (!HEU_HAPIUtility.ProcessHoudiniCookStatus(session, nodeName)) { Log(string.Format("Failed to cook loaded node with name: {0}.", nodeName)); return; } GameObject newGO = new GameObject(nodeName); HEU_NodeSync nodeSync = newGO.AddComponent <HEU_NodeSync>(); nodeSync.InitializeFromHoudini(session, newNodeID, nodeName, filePath); }
public static void CreateNodeSync(HEU_SessionBase session, string opName, string nodeNabel) { if (session == null) { session = HEU_SessionManager.GetDefaultSession(); } if (session == null || !session.IsSessionValid()) { return; } HAPI_NodeId newNodeID = -1; HAPI_NodeId parentNodeId = -1; if (!session.CreateNode(parentNodeId, opName, nodeNabel, true, out newNodeID)) { Debug.LogErrorFormat("Unable to create merge SOP node for connecting input assets."); return; } if (parentNodeId == -1) { // When creating a node without a parent, for SOP nodes, a container // geometry object will have been created by HAPI. // In all cases we want to use the node ID of that object container // so the below code sets the parent's node ID. // But for SOP/subnet we actually do want the subnet SOP node ID // hence the useSOPNodeID argument here is to override it. bool useSOPNodeID = opName.Equals("SOP/subnet"); HAPI_NodeInfo nodeInfo = new HAPI_NodeInfo(); if (!session.GetNodeInfo(newNodeID, ref nodeInfo)) { return; } if (nodeInfo.type == HAPI_NodeType.HAPI_NODETYPE_SOP) { if (!useSOPNodeID) { newNodeID = nodeInfo.parentId; } } else if (nodeInfo.type != HAPI_NodeType.HAPI_NODETYPE_OBJ) { Debug.LogErrorFormat("Unsupported node type {0}", nodeInfo.type); return; } } GameObject newGO = new GameObject(nodeNabel); HEU_NodeSync nodeSync = newGO.AddComponent<HEU_NodeSync>(); nodeSync.InitializeFromHoudini(session, newNodeID, nodeNabel, ""); }