godot-learning-shaders/entities/plinth/plinth.gd
2025-01-07 17:11:41 +01:00

50 lines
1 KiB
GDScript

@tool
extends StaticBody3D
@onready var exhibit_title: Label3D = $ExhibitTitle
@onready var exhibit_number: Label3D = $ExhibitNumber
var current_exhibit: Node = null
@export_group("Exhibit Settings")
@export var exhibit: PackedScene:
get:
return exhibit
set(value):
exhibit = value
set_exhibit()
@export var prefix: String:
get:
return prefix
set(value):
prefix = value
set_label3d()
@export var title: String:
get:
return title
set(value):
title = value
set_label3d()
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
set_label3d()
func set_label3d():
if exhibit_title and exhibit_number:
if not prefix.is_empty() and not title.is_empty():
exhibit_title.text = title
exhibit_number.text = prefix
func set_exhibit():
# remove the old exhibit if present
if current_exhibit:
remove_child(current_exhibit)
if exhibit != null:
var scene_node = exhibit.instantiate()
scene_node.position.y = 2
current_exhibit = scene_node
add_child(scene_node)