Example #1
0
    private void RefreshActionUnits()
    {
        // initialize action units
        if (ActionUnitCount == 0)
        {
            ActionUnitCount = VisageTrackerNative._getActionUnitCount();
            ActionUnits     = new ActionUnitData[ActionUnitCount];
            for (int actionUnitIndex = 0; actionUnitIndex < ActionUnitCount; actionUnitIndex++)
            {
                string         name           = Marshal.PtrToStringAnsi(VisageTrackerNative._getActionUnitName(actionUnitIndex));
                bool           used           = VisageTrackerNative._getActionUnitUsed(actionUnitIndex);
                ActionUnitData actionUnitData = new ActionUnitData(actionUnitIndex, name, used);
                ActionUnits [actionUnitIndex] = actionUnitData;
            }
        }

        // get action unit values
        if (ActionUnitCount > 0)
        {
            float[] values = new float[ActionUnitCount];
            VisageTrackerNative._getActionUnitValues(values);
            for (int actionUnitIndex = 0; actionUnitIndex < ActionUnitCount; actionUnitIndex++)
            {
                ActionUnits [actionUnitIndex].Value = values [actionUnitIndex];
            }
        }
    }