Added footsteps, new tree, various other tweaks

This commit is contained in:
derek
2024-12-05 11:47:34 -06:00
parent 816ae85938
commit 023879ea9f
389 changed files with 20484 additions and 234 deletions

View File

@@ -0,0 +1,64 @@
@tool
extends Node3D
const ScatterUtil := preload('./common/scatter_util.gd')
@export_category("ScatterShape")
@export var negative = false:
set(val):
negative = val
update_gizmos()
ScatterUtil.request_parent_to_rebuild(self)
@export var shape: ProtonScatterBaseShape:
set(val):
# Disconnect the previous shape if any
if shape and shape.changed.is_connected(_on_shape_changed):
shape.changed.disconnect(_on_shape_changed)
shape = val
if shape:
shape.changed.connect(_on_shape_changed)
update_gizmos()
ScatterUtil.request_parent_to_rebuild(self)
var _ignore_transform_notification = false
func _ready() -> void:
set_notify_transform(true)
func _notification(what):
match what:
NOTIFICATION_TRANSFORM_CHANGED:
if _ignore_transform_notification:
_ignore_transform_notification = false
return
ScatterUtil.request_parent_to_rebuild(self)
NOTIFICATION_ENTER_WORLD:
_ignore_transform_notification = true
func _set(property, _value):
if not Engine.is_editor_hint():
return false
# Workaround to detect when the node was duplicated from the editor.
if property == "transform":
_on_node_duplicated.call_deferred()
return false
func _on_shape_changed() -> void:
update_gizmos()
ScatterUtil.request_parent_to_rebuild(self)
func _on_node_duplicated() -> void:
shape = shape.get_copy() # Enfore uniqueness on duplicate, could be an option