Files
MovementTests/addons/shaker/data/ShakerPresetBase.gd
2026-01-20 15:27:59 +01:00

54 lines
1.2 KiB
GDScript

@tool
@icon("res://addons/shaker/assets/ShakerPreset.svg")
class_name ShakerPresetBase
extends Resource
# Enum for shake categories
enum Categories {
POSITION,
ROTATION,
SCALE
}
# Graph panel reference
var Graph: Panel
# Bake internal setting
@export_range(16, 96) var bake_internal: int = 64:
set = set_bake_internal,
get = get_bake_internal
# Follow timeline flag
@export var __follow_timeline: bool = false:
set = set_follow_timeline,
get = get_follow_timeline
# Component duration and parent node
var component_duration: float = 0.0
var parent: Node
# Signal for property changes
signal property_changed(name: StringName)
func set_bake_internal(value: int) -> void:
bake_internal = clamp(value, 16, 96)
_on_property_changed("bake_internal")
func get_bake_internal() -> int:
return bake_internal
func set_follow_timeline(value: bool) -> void:
__follow_timeline = value
_on_property_changed("__follow_timeline")
func get_follow_timeline() -> bool:
return __follow_timeline
# Handle property changes
func _on_property_changed(property_name: StringName) -> void:
property_changed.emit(property_name)
# Calculate the difference between two arrays
func _array_difference(a: Array, b: Array) -> Array:
return b.filter(func(item): return not a.has(item))