public void UploadInput(HEU_SessionBase session) { if (_nodeID == HEU_Defines.HEU_INVALID_NODE_ID) { Debug.LogErrorFormat("Input Node ID is invalid. Unable to upload input. Try recooking."); return; } if (_pendingInputObjectType != _inputObjectType) { ChangeInputType(session, _pendingInputObjectType); } if (_inputObjectType == InputObjectType.UNITY_MESH) { // Connect regular gameobjects if (_inputObjects == null || _inputObjects.Count == 0) { DisconnectAndDestroyInputs(session); } else { DisconnectAndDestroyInputs(session); // Create merge object, and input nodes with data, then connect them to the merge object bool bResult = HEU_InputUtility.CreateInputNodeWithMultiObjects(session, _nodeID, ref _connectedNodeID, ref _inputObjects, ref _inputObjectsConnectedAssetIDs, _keepWorldTransform); if (!bResult) { DisconnectAndDestroyInputs(session); return; } // Now connect from this asset to the merge object ConnectToMergeObject(session); if (!UploadObjectMergeTransformType(session)) { Debug.LogErrorFormat("Failed to upload object merge transform type!"); return; } if (!UploadObjectMergePackGeometry(session)) { Debug.LogErrorFormat("Failed to upload object merge pack geometry value!"); return; } } } else if (_inputObjectType == InputObjectType.HDA) { // Connect HDAs // First clear all previous input connections DisconnectAndDestroyInputs(session); // Create merge object, and connect all input HDAs bool bResult = HEU_InputUtility.CreateInputNodeWithMultiAssets(session, _parentAsset, ref _connectedNodeID, ref _inputAssetInfos, _keepWorldTransform, -1); if (!bResult) { DisconnectAndDestroyInputs(session); return; } // Now connect from this asset to the merge object ConnectToMergeObject(session); if (!UploadObjectMergeTransformType(session)) { Debug.LogErrorFormat("Failed to upload object merge transform type!"); return; } if (!UploadObjectMergePackGeometry(session)) { Debug.LogErrorFormat("Failed to upload object merge pack geometry value!"); return; } } //else if (_inputObjectType == InputObjectType.CURVE) //{ // TODO INPUT NODE - create new Curve SOP (add HEU_Curve here?) //} else { Debug.LogErrorFormat("Unsupported input type {0}. Unable to upload input.", _inputObjectType); } RequiresUpload = false; RequiresCook = true; ClearUICache(); }
public void UploadInput(HEU_SessionBase session) { if (_nodeID == HEU_Defines.HEU_INVALID_NODE_ID) { Debug.LogErrorFormat("Input Node ID is invalid. Unable to upload input. Try recooking."); return; } if (_pendingInputObjectType != _inputObjectType) { ChangeInputType(session, _pendingInputObjectType); } if (_inputObjectType == InputObjectType.UNITY_MESH) { // Connect regular gameobjects if (_inputObjects == null || _inputObjects.Count == 0) { DisconnectAndDestroyInputs(session); } else { DisconnectAndDestroyInputs(session); List<HEU_InputObjectInfo> inputObjectClone = new List<HEU_InputObjectInfo>(_inputObjects); // Special input interface preprocessing for (int i = inputObjectClone.Count - 1; i >= 0; i--) { if (inputObjectClone[i] == null || inputObjectClone[i]._gameObject == null) { continue; } HEU_BoundingVolume boundingVolume = inputObjectClone[i]._gameObject.GetComponent<HEU_BoundingVolume>(); if (boundingVolume == null) { continue; } List<GameObject> boundingBoxObjects = boundingVolume.GetAllIntersectingObjects(); if (boundingBoxObjects == null) { continue; } foreach (GameObject obj in boundingBoxObjects) { if (obj == null) { continue; } HEU_InputObjectInfo newObjInfo = new HEU_InputObjectInfo(); inputObjectClone[i].CopyTo(newObjInfo); newObjInfo._gameObject = obj; inputObjectClone.Add(newObjInfo); } // Remove this because it's not a real interface inputObjectClone.RemoveAt(i); } // Create merge object, and input nodes with data, then connect them to the merge object bool bResult = HEU_InputUtility.CreateInputNodeWithMultiObjects(session, _nodeID, ref _connectedNodeID, ref inputObjectClone, ref _inputObjectsConnectedAssetIDs, _keepWorldTransform); if (!bResult) { DisconnectAndDestroyInputs(session); return; } // Now connect from this asset to the merge object ConnectToMergeObject(session); if (!UploadObjectMergeTransformType(session)) { Debug.LogErrorFormat("Failed to upload object merge transform type!"); return; } if (!UploadObjectMergePackGeometry(session)) { Debug.LogErrorFormat("Failed to upload object merge pack geometry value!"); return; } } } else if (_inputObjectType == InputObjectType.HDA) { // Connect HDAs // First clear all previous input connections DisconnectAndDestroyInputs(session); // Create merge object, and connect all input HDAs bool bResult = HEU_InputUtility.CreateInputNodeWithMultiAssets(session, _parentAsset, ref _connectedNodeID, ref _inputAssetInfos, _keepWorldTransform, -1); if (!bResult) { DisconnectAndDestroyInputs(session); return; } // Now connect from this asset to the merge object ConnectToMergeObject(session); if (!UploadObjectMergeTransformType(session)) { Debug.LogErrorFormat("Failed to upload object merge transform type!"); return; } if (!UploadObjectMergePackGeometry(session)) { Debug.LogErrorFormat("Failed to upload object merge pack geometry value!"); return; } } //else if (_inputObjectType == InputObjectType.CURVE) //{ // TODO INPUT NODE - create new Curve SOP (add HEU_Curve here?) //} else { Debug.LogErrorFormat("Unsupported input type {0}. Unable to upload input.", _inputObjectType); } RequiresUpload = false; RequiresCook = true; ClearUICache(); }
public void UploadInput(HEU_SessionBase session) { if (_nodeID == HEU_Defines.HEU_INVALID_NODE_ID) { Debug.LogErrorFormat("Input Node ID is invalid. Unable to upload input. Try recooking."); return; } if(_pendingInputObjectType != _inputObjectType) { ChangeInputType(session, _pendingInputObjectType); } if(_inputObjectType == InputObjectType.UNITY_MESH) { if(_inputObjects == null || _inputObjects.Count == 0) { DisconnectAndDestroyInputAssets(session); } else { DisconnectAndDestroyInputAssets(session); bool bResult = HEU_InputUtility.CreateInputNodeWithMultiObjects(session, _nodeID, ref _connectedNodeID, ref _inputObjects, ref _inputObjectsConnectedAssetIDs, _keepWorldTransform); if(!bResult) { DisconnectAndDestroyInputAssets(session); return; } ConnectInputNode(session); if(!UploadObjectMergeTransformType(session)) { Debug.LogErrorFormat("Failed to upload object merge transform type!"); return; } if (!UploadObjectMergePackGeometry(session)) { Debug.LogErrorFormat("Failed to upload object merge pack geometry value!"); return; } } } else if(_inputObjectType == InputObjectType.HDA) { // Connect HDA. Note only 1 connection supported. if (IsInputAssetConnected()) { DisconnectInputAssetActor(session); } if (_inputAsset != null) { HEU_HoudiniAssetRoot inputAssetRoot = _inputAsset.GetComponent<HEU_HoudiniAssetRoot>(); if(inputAssetRoot != null && inputAssetRoot._houdiniAsset != null) { if (!inputAssetRoot._houdiniAsset.IsAssetValidInHoudini(session)) { // Force a recook if its not valid (in case it hasn't been loaded into the session) inputAssetRoot._houdiniAsset.RequestCook(true, false, true, true); } ConnectInputAssetActor(session); } else { Debug.LogWarningFormat("The input GameObject {0} is not a valid HDA asset.", _inputAsset.name); } } } //else if (_inputObjectType == InputObjectType.CURVE) //{ // TODO INPUT NODE - create new Curve SOP (add HEU_Curve here?) //} else { Debug.LogErrorFormat("Unsupported input type {0}. Unable to upload input.", _inputObjectType); } RequiresUpload = false; RequiresCook = true; ClearUICache(); }