Beispiel #1
0
    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
    }
Beispiel #3
0
    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);
        }
    }
Beispiel #4
0
	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
	}
Beispiel #5
0
	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;
	}
Beispiel #6
0
 public void cacheStrings(HAPI_ParmChoiceInfo choice_info)
 {
     label = choice_info.label;
     value = choice_info.value;
 }