OpenLiberty/scripts/model_test.gd

40 lines
1.4 KiB
GDScript3
Raw Normal View History

2022-11-10 22:31:42 +07:00
extends Node
2022-11-11 01:30:59 +07:00
@onready var spinbox: SpinBox = $GUI/VBoxContainer/HBoxContainer/SpinBox
@onready var meshinstance: MeshInstance3D = $mesh
var dff: RWClump
2022-11-15 21:30:07 +07:00
var misc: RWTextureDict
2022-11-11 01:30:59 +07:00
func _ready() -> void:
spinbox.rounded = true
spinbox.max_value = 0
2022-11-15 21:30:07 +07:00
misc = RWTextureDict.new(GameManager.open_file("models/misc.txd", FileAccess.READ))
2022-11-11 01:30:59 +07:00
func _ld_dff() -> void:
2022-11-10 22:31:42 +07:00
var dialog := FileDialog.new()
dialog.access = FileDialog.ACCESS_FILESYSTEM
dialog.current_dir = GameManager.gta_path
dialog.file_mode = FileDialog.FILE_MODE_OPEN_FILE
dialog.add_filter("*.dff")
add_child(dialog)
dialog.popup_centered(Vector2i(600, 400))
var file_path := (await dialog.file_selected) as String
remove_child(dialog)
var file := FileAccess.open(file_path, FileAccess.READ)
2022-11-11 01:30:59 +07:00
dff = RWClump.new(file)
spinbox.value = 0
spinbox.max_value = dff.geometry_list.geometry_count - 1
_ld_model(0)
func _ld_model(value: float) -> void:
var geometry := dff.geometry_list.geometries[int(value)]
2022-11-11 03:17:46 +07:00
meshinstance.mesh = geometry.mesh
2022-11-15 21:30:07 +07:00
var material := geometry.material_list.materials[0] as RWMaterial
meshinstance.material_override = material.material
if material.is_textured:
var texname := material.texture.texture_name.string
for raster in misc.textures:
if texname.to_lower() == raster.name:
meshinstance.material_override.albedo_texture = ImageTexture.create_from_image(raster.image)
break