Spawner.gd 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. extends Position3D
  2. #export (PackedScene) var object
  3. export var game_item_id = 0
  4. export (bool) var is_active = true
  5. var spawned_object
  6. var spawned_item_object
  7. func _ready():
  8. #spawn() #normally it should be commented out, can be used when developing item features, debugging or testing new items
  9. pass
  10. func spawn():
  11. if (is_active == true):
  12. var game_item_data = get_node("/root/GameItemList").find_game_item_data_by_id(game_item_id)
  13. print (game_item_data)
  14. if (game_item_data != null):
  15. #add the item container first
  16. var itemContainer = load("res://Scenes/Objects/ItemContainer.tscn")
  17. spawned_object = itemContainer.instance()
  18. spawned_object.item_type = game_item_id
  19. add_child(spawned_object)
  20. var itemModelSceneName = get_node("/root/GameItemList").get_game_item_value(game_item_data, "itemModelScene")
  21. #check if the item has an item model scene in the items.json file, if not fallback to default
  22. if itemModelSceneName == null:
  23. itemModelSceneName = "DefaultItemMesh.tscn"
  24. print (itemModelSceneName)
  25. #check if the given scene exists in the right directory, if not fallback to default
  26. if (load("res://Scenes/Objects/ItemModelScenes/" + itemModelSceneName) == null):
  27. print ("failed to find item model scene: " + str(itemModelSceneName) + ", fallback to default")
  28. itemModelSceneName = "DefaultItemMesh.tscn"
  29. #load item model scene and add it to the item container
  30. var itemModelScenePath = "res://Scenes/Objects/ItemModelScenes/" + itemModelSceneName
  31. var itemModelScene = load(itemModelScenePath)
  32. if itemModelScene != null:
  33. spawned_item_object = itemModelScene.instance()
  34. spawned_object.add_child(spawned_item_object)