generated from krampus/template-godot4
34 lines
675 B
GDScript
34 lines
675 B
GDScript
@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()
|