public void reset() { // Please keep these in the same order and grouping as their declarations at the top. // Assets ------------------------------------------------------------------------------------------------------- prControl = null; // Parameters ----------------------------------------------------------------------------------------------- prEditable = true; prParmCount = 0; prParmIntValueCount = 0; prParmFloatValueCount = 0; prParmStringValueCount = 0; prParmChoiceCount = 0; prParms = new HAPI_ParmInfo[0]; prParmIntValues = new int[0]; prParmFloatValues = new float[0]; prParmStringHandles = new HAPI_StringHandle[0]; prParmChoiceLists = new HAPI_ParmChoiceInfo[0]; myParmInfoStrings = new HAPI_ParmInfoStrings[0]; myParmChoiceInfoStrings = new HAPI_ParmChoiceInfoStrings[0]; myParmStringValues = new string[0]; prLastChangedParmId = -1; myParmsUndoInfo = null; prFolderListSelections = new List <int>(); prFolderListSelectionIds = new List <int>(); prFolderListSelections.Add(0); prFolderListSelectionIds.Add(-1); // Control ------------------------------------------------------------------------------------------------- myPostSerialization = true; myValuesEqualToHoudini = false; }
public void getParameterValues() { if (prControl == null) { return; } if (prControl.prAsset == null) { return; } if (prControl.prAssetId < 0) { return; } if (myPostSerialization) { myValuesEqualToHoudini = areValuesEqualToHoudini(); } else { myValuesEqualToHoudini = true; } // Create undo info if it hasn't been created already if (myParmsUndoInfo == null) { myParmsUndoInfo = ScriptableObject.CreateInstance <HoudiniParmsUndoInfo>(); } // Get the node info again HAPI_NodeInfo node_info = HoudiniHost.getNodeInfo(prControl.prNodeId); prParmCount = node_info.parmCount; prParmIntValueCount = node_info.parmIntValueCount; prParmFloatValueCount = node_info.parmFloatValueCount; prParmStringValueCount = node_info.parmStringValueCount; prParmChoiceCount = node_info.parmChoiceCount; // Get all parameters. prParms = new HAPI_ParmInfo[prParmCount]; HoudiniAssetUtility.getArray1Id(prControl.prNodeId, HoudiniHost.getParameters, prParms, prParmCount); // Get parameter int values. prParmIntValues = new int[prParmIntValueCount]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParmIntValues, prParmIntValues, prParmIntValueCount); myParmsUndoInfo.parmIntValues = new int[prParmIntValueCount]; Array.Copy(prParmIntValues, myParmsUndoInfo.parmIntValues, prParmIntValueCount); // Get parameter float values. prParmFloatValues = new float[prParmFloatValueCount]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParmFloatValues, prParmFloatValues, prParmFloatValueCount); myParmsUndoInfo.parmFloatValues = new float[prParmFloatValueCount]; Array.Copy(prParmFloatValues, myParmsUndoInfo.parmFloatValues, prParmFloatValueCount); // Get parameter string (handle) values. prParmStringValues = new int[prParmStringValueCount]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParmStringValues, prParmStringValues, prParmStringValueCount); // Get parameter choice lists. prParmChoiceLists = new HAPI_ParmChoiceInfo[prParmChoiceCount]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParmChoiceLists, prParmChoiceLists, prParmChoiceCount); // Build the map of parm id -> parm for (int i = 0; i < prParms.Length; ++i) { myParmMap[prParms[i].id] = prParms[i]; } cacheStringsFromHost(); // Go through parameters and set index map and multiparm map for undo info myParmsUndoInfo.parmNames.Clear(); myParmsUndoInfo.parmIndices.Clear(); foreach (HAPI_ParmInfo parm in prParms) { // Need to check the index values are greater or equal to 0 // for now because there is a bug where some parameters are // being set to have an integer parameter type, a size of // zero, and an index value of -1 if (parm.isInt() && parm.intValuesIndex >= 0) { myParmsUndoInfo.parmIndices.Add(parm.intValuesIndex); } else if (parm.isFloat() && parm.floatValuesIndex >= 0) { myParmsUndoInfo.parmIndices.Add(parm.floatValuesIndex); } else if (parm.isString() && parm.stringValuesIndex >= 0) { myParmsUndoInfo.parmIndices.Add(parm.stringValuesIndex); } else { continue; } myParmsUndoInfo.parmNames.Add(parm.name); } #if UNITY_EDITOR // Set which parameter values have been overridden (only needed for a prefab instance) if (prControl && prControl.isPrefabInstance() && gameObject.GetComponent <HoudiniAsset>() != null) { HoudiniAsset prefab_asset = prControl.prAsset.getParentPrefabAsset(); if (prefab_asset && prefab_asset.prParms != null && prefab_asset.prParms.prParms != null && !prefab_asset.isApplyingChangesToPrefab()) { // loop through parameter values and determine which ones have been // overridden (ie. changed from corresponding parameter value on prefab) for (int i = 0; i < prParms.Length; ++i) { myOverriddenParmsMap[prParms[i].id] = !isParmSameInPrefab(prParms[i].id, prefab_asset.prParms); } } // This tells Unity that parameter values have been overridden for this prefab instance PrefabUtility.RecordPrefabInstancePropertyModifications(this); } #endif // UNITY_EDITOR }
public void getParameterValues() { if (prControl == null) { return; } if (prControl.prAsset == null) { return; } if (prControl.prAssetId < 0) { return; } if (myPostSerialization) { myValuesEqualToHoudini = areValuesEqualToHoudini(); } else { myValuesEqualToHoudini = true; } // Create undo info if it hasn't been created already if (myParmsUndoInfo == null) { myParmsUndoInfo = ScriptableObject.CreateInstance <HoudiniParmsUndoInfo>(); } // Get the node info again HAPI_NodeInfo node_info = HoudiniHost.getNodeInfo(prControl.prNodeId); prParmCount = node_info.parmCount; prParmIntValueCount = node_info.parmIntValueCount; prParmFloatValueCount = node_info.parmFloatValueCount; prParmStringValueCount = node_info.parmStringValueCount; prParmChoiceCount = node_info.parmChoiceCount; // Get all parameters. prParms = new HAPI_ParmInfo[prParmCount]; myParmInfoStrings = new HAPI_ParmInfoStrings[prParmCount]; if (myParmInputs == null) { myParmInputs = new HAPI_ParmInput[prParmCount]; } HoudiniAssetUtility.getArray1Id(prControl.prNodeId, HoudiniHost.getParameters, prParms, prParmCount); // Get parameter int values. prParmIntValues = new int[prParmIntValueCount]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParmIntValues, prParmIntValues, prParmIntValueCount); myParmsUndoInfo.parmIntValues = new int[prParmIntValueCount]; Array.Copy(prParmIntValues, myParmsUndoInfo.parmIntValues, prParmIntValueCount); // Get parameter float values. prParmFloatValues = new float[prParmFloatValueCount]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParmFloatValues, prParmFloatValues, prParmFloatValueCount); myParmsUndoInfo.parmFloatValues = new float[prParmFloatValueCount]; Array.Copy(prParmFloatValues, myParmsUndoInfo.parmFloatValues, prParmFloatValueCount); // Get parameter string (handle) values. prParmStringHandles = new int[prParmStringValueCount]; myParmStringValues = new string[prParmStringValueCount]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParmStringValues, prParmStringHandles, prParmStringValueCount); // Get parameter choice lists. prParmChoiceLists = new HAPI_ParmChoiceInfo[prParmChoiceCount]; myParmChoiceInfoStrings = new HAPI_ParmChoiceInfoStrings[prParmChoiceCount]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParmChoiceLists, prParmChoiceLists, prParmChoiceCount); cacheStringsFromHost(); // Go through parameters and set index map and multiparm map for undo info myParmsUndoInfo.parmNames.Clear(); myParmsUndoInfo.parmIndices.Clear(); foreach (HAPI_ParmInfo parm in prParms) { if (parm.isNode() && parm.id >= myParmInputs.Length) { // For input node params, make sure they have an entry // in myParmInputs for their data. Fixes bug 85804 setChangedNodeParameterIntoHost(parm.id); } // Need to check the index values are greater or equal to 0 // for now because there is a bug where some parameters are // being set to have an integer parameter type, a size of // zero, and an index value of -1 if (parm.isInt() && parm.intValuesIndex >= 0) { myParmsUndoInfo.parmIndices.Add(parm.intValuesIndex); } else if (parm.isFloat() && parm.floatValuesIndex >= 0) { myParmsUndoInfo.parmIndices.Add(parm.floatValuesIndex); } else if (parm.isString() && parm.stringValuesIndex >= 0) { myParmsUndoInfo.parmIndices.Add(parm.stringValuesIndex); } else { continue; } myParmsUndoInfo.parmNames.Add(parm.name); } }
public void getParameterValues() { if ( prControl == null ) return; if ( prControl.prAsset == null ) return; if ( prControl.prAssetId < 0 ) return; if ( myPostSerialization ) myValuesEqualToHoudini = areValuesEqualToHoudini(); else myValuesEqualToHoudini = true; // Create undo info if it hasn't been created already if ( myParmsUndoInfo == null ) myParmsUndoInfo = ScriptableObject.CreateInstance< HoudiniParmsUndoInfo >(); // Get the node info again HAPI_NodeInfo node_info = HoudiniHost.getNodeInfo( prControl.prNodeId ); prParmCount = node_info.parmCount; prParmIntValueCount = node_info.parmIntValueCount; prParmFloatValueCount = node_info.parmFloatValueCount; prParmStringValueCount = node_info.parmStringValueCount; prParmChoiceCount = node_info.parmChoiceCount; // Get all parameters. prParms = new HAPI_ParmInfo[ prParmCount ]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParameters, prParms, prParmCount ); // Get parameter int values. prParmIntValues = new int[ prParmIntValueCount ]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParmIntValues, prParmIntValues, prParmIntValueCount ); myParmsUndoInfo.parmIntValues = new int[ prParmIntValueCount ]; Array.Copy( prParmIntValues, myParmsUndoInfo.parmIntValues, prParmIntValueCount ); // Get parameter float values. prParmFloatValues = new float[ prParmFloatValueCount ]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParmFloatValues, prParmFloatValues, prParmFloatValueCount ); myParmsUndoInfo.parmFloatValues = new float[ prParmFloatValueCount ]; Array.Copy( prParmFloatValues, myParmsUndoInfo.parmFloatValues, prParmFloatValueCount ); // Get parameter string (handle) values. prParmStringValues = new int[ prParmStringValueCount ]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParmStringValues, prParmStringValues, prParmStringValueCount ); // Get parameter choice lists. prParmChoiceLists = new HAPI_ParmChoiceInfo[ prParmChoiceCount ]; HoudiniAssetUtility.getArray1Id( prControl.prNodeId, HoudiniHost.getParmChoiceLists, prParmChoiceLists, prParmChoiceCount ); // Build the map of parm id -> parm for ( int i = 0; i < prParms.Length; ++i ) myParmMap[ prParms[ i ].id ] = prParms[ i ]; cacheStringsFromHost(); // Go through parameters and set index map and multiparm map for undo info myParmsUndoInfo.parmNames.Clear(); myParmsUndoInfo.parmIndices.Clear(); foreach ( HAPI_ParmInfo parm in prParms ) { // Need to check the index values are greater or equal to 0 // for now because there is a bug where some parameters are // being set to have an integer parameter type, a size of // zero, and an index value of -1 if ( parm.isInt() && parm.intValuesIndex >= 0 ) myParmsUndoInfo.parmIndices.Add( parm.intValuesIndex ); else if ( parm.isFloat() && parm.floatValuesIndex >= 0 ) myParmsUndoInfo.parmIndices.Add( parm.floatValuesIndex ); else if ( parm.isString() && parm.stringValuesIndex >= 0 ) myParmsUndoInfo.parmIndices.Add( parm.stringValuesIndex ); else continue; myParmsUndoInfo.parmNames.Add( parm.name ); } #if UNITY_EDITOR // Set which parameter values have been overridden (only needed for a prefab instance) if ( prControl && prControl.isPrefabInstance() && gameObject.GetComponent< HoudiniAsset >() != null ) { HoudiniAsset prefab_asset = prControl.prAsset.getParentPrefabAsset(); if ( prefab_asset && prefab_asset.prParms != null && prefab_asset.prParms.prParms != null && !prefab_asset.isApplyingChangesToPrefab() ) { // loop through parameter values and determine which ones have been // overridden (ie. changed from corresponding parameter value on prefab) for ( int i = 0; i < prParms.Length; ++i ) { myOverriddenParmsMap[ prParms[ i ].id ] = !isParmSameInPrefab( prParms[ i ].id, prefab_asset.prParms ); } } // This tells Unity that parameter values have been overridden for this prefab instance PrefabUtility.RecordPrefabInstancePropertyModifications( this ); } #endif // UNITY_EDITOR }
public void reset() { // Please keep these in the same order and grouping as their declarations at the top. // Assets ------------------------------------------------------------------------------------------------------- prControl = null; // Parameters ----------------------------------------------------------------------------------------------- prEditable = true; prParmCount = 0; prParmIntValueCount = 0; prParmFloatValueCount = 0; prParmStringValueCount = 0; prParmChoiceCount = 0; prParms = null; prParmIntValues = new int[ 0 ]; prParmFloatValues = new float[ 0 ]; prParmStringValues = new HAPI_StringHandle[ 0 ]; prParmChoiceLists = new HAPI_ParmChoiceInfo[ 0 ]; prLastChangedParmId = -1; myParmsUndoInfo = null; prFolderListSelections = new List< int >(); prFolderListSelectionIds = new List< int >(); prFolderListSelections.Add( 0 ); prFolderListSelectionIds.Add( -1 ); // Control ------------------------------------------------------------------------------------------------- myPostSerialization = true; myValuesEqualToHoudini = false; }
public void cacheStrings(HAPI_ParmChoiceInfo choice_info) { label = choice_info.label; value = choice_info.value; }