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