// Checks if the parameter with the given id parm_id represents the same parameter
    // with the same value in this set of parameters and another set of parameters parmsB.
    public bool isParmSameInPrefab(int parm_id, HoudiniParms parmsB)
    {
        HAPI_ParmInfo parm_infoA = findParm(parm_id);
        HAPI_ParmInfo parm_infoB = parmsB.findParm(parm_id);

        if (parm_infoA.GetType() != parm_infoB.GetType() ||
            parm_infoA.size != parm_infoB.size ||
            parm_infoA.name != parm_infoB.name ||
            parm_infoA.label != parm_infoB.label)
        {
            Debug.LogError("Parameter structure is different from prefab");
            return(false);
        }

        // only need to check type and size of one because already checked that
        // parameter infos have  type and size
        if (parm_infoA.isFloat())
        {
            for (int ii = 0; ii < parm_infoA.size; ii++)
            {
                float valueA = prParmFloatValues[parm_infoA.floatValuesIndex + ii];
                float valueB = parmsB.prParmFloatValues[parm_infoB.floatValuesIndex + ii];
                if (valueA != valueB)
                {
                    return(false);
                }
            }
        }
        else if (parm_infoB.isInt())
        {
            for (int ii = 0; ii < parm_infoA.size; ii++)
            {
                int valueA = prParmIntValues[parm_infoA.intValuesIndex + ii];
                int valueB = parmsB.prParmIntValues[parm_infoB.intValuesIndex + ii];
                if (valueA != valueB)
                {
                    return(false);
                }
            }
        }
        else if (parm_infoB.isString())
        {
            string[] valuesA = getParmStrings(parm_infoA);
            string[] valuesB = parmsB.getParmStrings(parm_infoB);

            if (valuesA.Length != valuesB.Length)
            {
                return(false);
            }

            for (int ii = 0; ii < valuesA.Length; ii++)
            {
                if (valuesA[ii] != valuesB[ii])
                {
                    return(false);
                }
            }
        }

        return(true);
    }
Ejemplo n.º 2
0
	// Checks if the parameter with the given id parm_id represents the same parameter 
	// with the same value in this set of parameters and another set of parameters parmsB.
	public bool isParmSameInPrefab( int parm_id, HoudiniParms parmsB )
	{
		HAPI_ParmInfo parm_infoA = findParm( parm_id );
		HAPI_ParmInfo parm_infoB = parmsB.findParm( parm_id );
		
		if ( parm_infoA.GetType() != parm_infoB.GetType() ||
			 parm_infoA.size != parm_infoB.size ||
			 parm_infoA.name != parm_infoB.name || 
			 parm_infoA.label != parm_infoB.label )
		{
			Debug.LogError( "Parameter structure is different from prefab" );
			return false;
		}
		
		// only need to check type and size of one because already checked that
		// parameter infos have  type and size
		if ( parm_infoA.isFloat() )
		{
			for ( int ii = 0; ii < parm_infoA.size; ii++ )
			{
				float valueA = prParmFloatValues[ parm_infoA.floatValuesIndex + ii ];
				float valueB = parmsB.prParmFloatValues[ parm_infoB.floatValuesIndex + ii ];
				if ( valueA != valueB )
				{
					return false;
				}
			}
		}
		else if ( parm_infoB.isInt() )
		{
			for ( int ii = 0; ii < parm_infoA.size; ii++ )
			{
				int valueA = prParmIntValues[ parm_infoA.intValuesIndex + ii ];
				int valueB = parmsB.prParmIntValues[ parm_infoB.intValuesIndex + ii ];
				if ( valueA != valueB )
				{
					return false;
				}
			}
		}
		else if ( parm_infoB.isString() )
		{
			string[] valuesA = getParmStrings( parm_infoA );
			string[] valuesB = parmsB.getParmStrings( parm_infoB );
			
			if ( valuesA.Length != valuesB.Length )
			{
				return false;
			}
			
			for ( int ii = 0; ii < valuesA.Length; ii++ )
			{
				if ( valuesA[ ii ] != valuesB[ ii ] )
				{
					return false;
				}
			}
		}

		return true;
	}