Home Forums Macros During et InsertSendMessage Reply To: During et InsertSendMessage

#6491
Philippe OllivierPhilippe
Keymaster

Salut Maxime,

Tu dois changer trois choses :

1 – Tu inverses les valeurs de début et de fin
Declare Local float $startValue$ = 1
Declare Local float $endValue$ = 0

2 – Ici tu prends la valeur max et non pas la valeur min
$targetValue$ = {max($endValue$,$targetValue$ + $increment$)}

3 – Enfin, tu vérifies que la valeur cible est supérieure à la valeur de fin pour autoriser un nouveau tour de boucle
While {$targetValue$ > $endValue$}

Voici la macro finale qui décrémente au lieu d’incrémenter :

//***********************************************************************************
// Set the total duration of the value change
Declare Local int $duration_ms$ = 1000

// Set the start and end value
Declare Local float $startValue$ = 1
Declare Local float $endValue$ = 0

Declare Local int $steps$ = 100
Declare Local float $incrementDuration$ = 0
Declare Local float $targetValue$ = $startValue$
Declare Local float $increment$ = {($endValue$ – $targetValue$) / $steps$}

// calculate the number of needed steps for the current increment
$steps$ = {($endValue$ – $startValue$) / $increment$}
//Post $steps$

Declare Local int $startClock$ = {monotonic_ms()}

DoRepeat
$increment$ = {($endValue$ – $targetValue$) / $steps$}
$incrementDuration$ = { ($startClock$ + $duration_ms$ – monotonic_ms())/ $steps$ }

// Current step value calculation
$targetValue$ = {max($endValue$,$targetValue$ + $increment$)}

//******************** Put the destination here ********************
InsertSendMessage fx1 1 SpeedFloat $targetValue$

WaitDuration {$incrementDuration$}

$steps$ = {$steps$ – 1 }
While {$targetValue$ > $endValue$} //Post {monotonic_ms() – $startClock$}
//***********************************************************************************