mirror of
https://github.com/FOSS-Supremacy/OpenLiberty.git
synced 2025-04-28 11:57:58 +03:00
39 lines
1.4 KiB
GDScript
39 lines
1.4 KiB
GDScript
extends Node
|
|
|
|
@onready var spinbox: SpinBox = $GUI/VBoxContainer/HBoxContainer/SpinBox
|
|
@onready var meshinstance: MeshInstance3D = $mesh
|
|
var dff: RWClump
|
|
var misc: RWTextureDict
|
|
|
|
func _ready() -> void:
|
|
spinbox.rounded = true
|
|
spinbox.max_value = 0
|
|
misc = RWTextureDict.new(GameManager.open_file("models/misc.txd", FileAccess.READ))
|
|
|
|
func _ld_dff() -> void:
|
|
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)
|
|
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)]
|
|
meshinstance.mesh = geometry.mesh
|
|
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
|