Exemple #1
0
    public void setChangedParameterIntoHost(int id)
    {
        if (prControl == null)
        {
            return;
        }
        if (prControl.prAsset == null)
        {
            return;
        }

        if (id == -1)
        {
            return;
        }

        HAPI_ParmInfo parm = findParm(id);

        if ((HAPI_ParmType)parm.type == HAPI_ParmType.HAPI_PARMTYPE_MULTIPARMLIST)
        {
            int[] values = new int[1];
            HoudiniHost.getParmIntValues(prControl.prNodeId, values, parm.intValuesIndex, 1);

            int difference = prParmIntValues[parm.intValuesIndex] - values[0];
            if (difference > 0)
            {
                appendMultiparmInstances(parm, difference);
            }
            else if (difference < 0)
            {
                removeMultiparmInstances(parm, -difference);
            }

            getParameterValues();
        }
        else if (parm.isNode())
        {
            setChangedNodeParameterIntoHost(id);
        }
        else if (parm.isFloat())
        {
            float[] values = new float[parm.size];
            Array.Copy(prParmFloatValues, parm.floatValuesIndex, values, 0, parm.size);
            HoudiniHost.setParmFloatValues(prControl.prNodeId, values, parm.floatValuesIndex, parm.size);
        }
        else if (parm.isInt() && (HAPI_ParmType)parm.type != HAPI_ParmType.HAPI_PARMTYPE_MULTIPARMLIST)
        {
            int[] values = new int[parm.size];
            Array.Copy(prParmIntValues, parm.intValuesIndex, values, 0, parm.size);
            HoudiniHost.setParmIntValues(prControl.prNodeId, values, parm.intValuesIndex, parm.size);
        }
        else if (parm.isString())
        {
            string[] strings = getParmStrings(parm);
            for (int p = 0; p < parm.size; ++p)
            {
                HoudiniHost.setParmStringValue(prControl.prNodeId, strings[p], parm.id, p);
            }
        }
    }