netfishing/world/fishable_water_region.gd

39 lines
1.1 KiB
GDScript

@tool
class_name FishableWaterRegion
extends Area3D
const FishPoolType = preload("res://fish/fish_pool.gd")
enum SurfaceHeightMode {
EXPLICIT,
PARENT_GLOBAL_Y,
}
@export var location_tags: Array[StringName] = []
@export var water_type: WaterType.Type = WaterType.Type.FRESH_WATER
@export var fish_pool: FishPoolType
@export var selection_priority: int = 0
@export_group("Surface")
@export var surface_height_mode: SurfaceHeightMode = SurfaceHeightMode.EXPLICIT:
set(value):
surface_height_mode = value
if Engine.is_editor_hint():
notify_property_list_changed()
## Legacy explicit height used when Surface Height Mode is Explicit.
@export var surface_height: float = 0.3
func get_surface_height() -> float:
if surface_height_mode == SurfaceHeightMode.PARENT_GLOBAL_Y:
var surface_owner := get_parent() as Node3D
if surface_owner != null:
return surface_owner.global_position.y
return surface_height
func _validate_property(property: Dictionary) -> void:
if (
property.name == "surface_height"
and surface_height_mode == SurfaceHeightMode.PARENT_GLOBAL_Y
):
property.usage = int(property.usage) & ~PROPERTY_USAGE_EDITOR