GiantsEditReloaded/viewer.gd

114 lines
2.8 KiB
GDScript

extends Node
var objmgr
onready var currObj = get_node("CurrentObject")
onready var tabs = get_node("Tabs")
func reset_itemlist_models(search=""):
var ilist = get_node("ItemList")
ilist.clear()
var done = []
var f2 = File.new()
f2.open("res://objlist.txt", File.READ)
var a = true
while a:
a = f2.get_line()
var arr = a.split("\t")
if len(arr) >= 3:
if not done.has(arr[0]):
var parts = arr[2].split(" ")
if len(parts) > 0:
if not search or (search and search in parts[0]):
ilist.add_item(arr[0] + " " + parts[0])
done.append(arr[0])
f2.close()
func _on_Node_ready():
tabs.add_tab("Models")
tabs.add_tab("Textures")
tabs.current_tab = 0
var giantsscript = load("res://objectmanager.gd")
var f1 = File.new()
f1.open("res://dir.txt", File.READ)
var dir = f1.get_as_text()
f1.close()
objmgr = giantsscript.ObjectManager.new()
objmgr.GIANTS_PATH = dir
objmgr.build()
reset_itemlist_models()
var tlist = get_node("TextureList")
for t in objmgr.index:
if t.ends_with(".tga"):
tlist.add_item(t)
func _on_ViewportContainer_mouse_entered():
get_node("ViewportContainer/Viewport/Player").capture_mouse = true
print("capture true")
func _on_ViewportContainer_mouse_exited():
get_node("ViewportContainer/Viewport/Player").capture_mouse = false
print("capture false")
func _on_ItemList_item_selected(index):
print("Showing")
get_node("Loader").show()
yield(get_tree(),"idle_frame")
yield(get_tree(),"idle_frame")
var text = get_node("ItemList").get_item_text(index)
var model = text.split(" ")[1] + ".gbs"
print("Loading "+model)
var m = objmgr.load_model(model)
var meshinstance = objmgr.load_model_mesh(m)
remove_child(currObj)
add_child(meshinstance)
currObj = meshinstance
print("Hiding")
get_node("Loader").hide()
func _on_Tabs_tab_changed(tab):
var ilist = get_node("ItemList")
var vpcontainer = get_node("ViewportContainer")
var sprite = get_node("Sprite")
var texturelist = get_node("TextureList")
var search = get_node("SearchModel")
if tab == 0: # model
ilist.visible = true
vpcontainer.visible = true
search.visible = true
texturelist.visible = false
sprite.visible = false
else:
ilist.visible = false
vpcontainer.visible = false
search.visible = false
texturelist.visible = true
sprite.visible = true
func _on_TextureList_item_selected(index):
var sprite = get_node("Sprite")
var text = get_node("TextureList").get_item_text(index)
var texture = objmgr.load_texture(text)
sprite.texture = texture
var max_height = 685
var max_width = 700
var height_scale = max_height / texture.get_height()
var width_scale = max_width / texture.get_width()
var final_scale = min(height_scale, width_scale)
sprite.scale = Vector2(final_scale, final_scale)
func _on_SearchModel_text_changed(new_text):
reset_itemlist_models(new_text)