114 lines
2.8 KiB
GDScript
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)
|