add OptionParameter to lfo wave type (#90)
This commit is contained in:
@@ -1,18 +1,23 @@
|
||||
package org.openrndr.extra.timeoperators
|
||||
|
||||
import org.openrndr.extra.parameters.Description
|
||||
import org.openrndr.extra.parameters.OptionParameter
|
||||
import org.openrndr.math.clamp
|
||||
import org.openrndr.math.mod
|
||||
import kotlin.math.*
|
||||
|
||||
internal const val TAU = 2.0 * PI
|
||||
|
||||
// TODO: When there's a @DropdownParameter switch from Int to String
|
||||
enum class LFOWave(val wave: Int) {
|
||||
SAW(0), SINE(1), SQUARE(2), TRIANGLE(3)
|
||||
enum class LFOWave {
|
||||
Saw, Sine, Square, Triangle
|
||||
}
|
||||
|
||||
@Suppress("UNUSED")
|
||||
class LFO(var wave: LFOWave = LFOWave.SAW) : TimeTools {
|
||||
@Description("LFO")
|
||||
class LFO(wave: LFOWave = LFOWave.Saw) : TimeTools {
|
||||
@OptionParameter("Wave")
|
||||
var wave = wave
|
||||
|
||||
private var current = 0.0
|
||||
set(value) {
|
||||
field = clamp(value, 0.0, 1.0)
|
||||
@@ -28,10 +33,10 @@ class LFO(var wave: LFOWave = LFOWave.SAW) : TimeTools {
|
||||
|
||||
fun sample(frequency: Double = 1.0, phase: Double = 0.0): Double {
|
||||
return when(wave) {
|
||||
LFOWave.SAW -> saw(frequency, phase)
|
||||
LFOWave.SINE -> sine(frequency, phase)
|
||||
LFOWave.SQUARE -> square(frequency, phase)
|
||||
LFOWave.TRIANGLE -> triangle(frequency, phase)
|
||||
LFOWave.Saw -> saw(frequency, phase)
|
||||
LFOWave.Sine -> sine(frequency, phase)
|
||||
LFOWave.Square -> square(frequency, phase)
|
||||
LFOWave.Triangle -> triangle(frequency, phase)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user