57 lines
1.6 KiB
GDScript
57 lines
1.6 KiB
GDScript
@tool
|
|
extends Node
|
|
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
pass # Replace with function body.
|
|
|
|
|
|
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
func _process(_delta):
|
|
pass
|
|
|
|
func get_tags(selectedObject:Node):
|
|
var _tags: PackedStringArray
|
|
if (selectedObject.has_meta("tags")):
|
|
_tags = selectedObject.get_meta("tags")
|
|
return _tags
|
|
else:
|
|
printerr("no tags inside %",selectedObject)
|
|
return _tags
|
|
|
|
## Add tag on selected object by adding metadata
|
|
func add_tag(selectedObject:Node,tag:String):
|
|
var _all_tags:PackedStringArray
|
|
if (selectedObject.has_meta("tags")):
|
|
_all_tags = selectedObject.get_meta("tags")
|
|
if (_all_tags.find(tag) == -1):
|
|
_all_tags.append(tag)
|
|
else:
|
|
_all_tags.append(tag)
|
|
selectedObject.set_meta("tags",_all_tags)
|
|
|
|
func add_tags(selectedObject:Node,tags:PackedStringArray):
|
|
var _all_tags:PackedStringArray
|
|
if (selectedObject.has_meta("tags")):
|
|
_all_tags = selectedObject.get_meta("tags")
|
|
_all_tags.append_array(tags)
|
|
selectedObject.set_meta("tags",_all_tags)
|
|
|
|
func remove_tags(selectedObject:Node,tags:PackedStringArray):
|
|
if (selectedObject.has_meta("tags")):
|
|
var _all_tags:PackedStringArray
|
|
_all_tags = selectedObject.get_meta("tags")
|
|
for _tag:String in tags:
|
|
if(_all_tags.find(_tag) !=-1):
|
|
_all_tags.remove_at(_all_tags.find(_tag))
|
|
selectedObject.set_meta("tags",_all_tags)
|
|
|
|
func isSticker(selectedObject:Node):
|
|
var _isSticker:bool = false
|
|
var _tags = get_tags(selectedObject)
|
|
if (_tags.size() > 0):
|
|
if (_tags.find("sticker") != -1):
|
|
_isSticker = true
|
|
|
|
return _isSticker
|