28 lines
409 B
Go
28 lines
409 B
Go
package rover
|
|
|
|
import (
|
|
"juju.net.nz/mathex"
|
|
)
|
|
|
|
type Jogger struct {
|
|
value *float32
|
|
original float32
|
|
}
|
|
|
|
func NewJogger(value *float32, dial, offset, scale float32) *Jogger {
|
|
j := &Jogger{value: value, original: *value}
|
|
|
|
dial = mathex.Clipf(dial, -1, 1)
|
|
|
|
v := *value + *value * (dial + offset) * scale
|
|
if v < 0 {
|
|
v = 0
|
|
}
|
|
*value = v
|
|
return j
|
|
}
|
|
|
|
func (j *Jogger) Restore() {
|
|
*j.value = j.original
|
|
}
|