grunk/src/ui/quaker.gd

34 lines
675 B
GDScript3
Raw Normal View History

2025-04-21 15:21:31 -06:00
@tool
class_name Quaker extends Node3D
## Screws with the scale of children.
## Scale all axes equally. Overrides `correlated`.
@export var uniform := false
## Correlate axis scale.
@export var correlated := false
@export var intensity := 0.0
var _buffer := Vector3.ONE
func rand_exp() -> float:
return exp(randfn(0, intensity))
func rand_scale() -> Vector3:
if uniform:
return Vector3.ONE * rand_exp()
if correlated:
var v := Vector3(rand_exp(), _buffer.x, _buffer.y)
_buffer.x = _buffer.y
_buffer.y = _buffer.z
_buffer.z = v.x
return v
return Vector3(rand_exp(), rand_exp(), rand_exp())
func _process(_delta: float) -> void:
scale = rand_scale()