Godot-RTS-Template/core/scripts/entity.gd
2025-07-23 01:16:14 +02:00

32 lines
882 B
GDScript

extends Node3D
class_name Entity
## Base entity class for everything interactive.
##
## Should be the parent of every units, buildings,
## npc, loot, and everything that the player can interact with in 3D
func _ready() -> void:
add_to_group('selectable')
## Check if the entity is contained in the [Rect2] [param selection_box] of the player.
## Need the [Camera3D] of the player to work
func is_in_selection(selection_box:Rect2,player_cam:Camera3D):
var p = player_cam.unproject_position(global_position)
if min(selection_box.size.x,selection_box.size.y) <0:
breakpoint
return selection_box.has_point(p)
func select():
add_to_group('selected-by-'+str(get_tree().get_multiplayer().get_unique_id()))
print(self.name," selected")
func deselect():
remove_from_group('selected-by-'+str(get_tree().get_multiplayer().get_unique_id()))
print(self.name," unselected")