extends SceneTree func _initialize() -> void: call_deferred("run") func run() -> void: root.size = Vector2i(1400,900) var stage := Node3D.new() root.add_child(stage) var camera := Camera3D.new() stage.add_child(camera) camera.position = Vector3(0.85,0.25,0.55) camera.look_at(Vector3(0,0,-0.15)) var light := DirectionalLight3D.new() stage.add_child(light) light.rotation_degrees = Vector3(-35,-30,0) light.light_energy = 1.8 var environment := WorldEnvironment.new() environment.environment = Environment.new() environment.environment.background_mode = Environment.BG_COLOR environment.environment.background_color = Color("333d45") environment.environment.ambient_light_source = Environment.AMBIENT_SOURCE_COLOR environment.environment.ambient_light_color = Color.WHITE environment.environment.ambient_light_energy = 0.6 stage.add_child(environment) for index in [0,1,4,5]: var model := WeaponModels.build(index) stage.add_child(model) WeaponSkins.apply(model,{}) assert(model.get_node("Frame/receiver").get_child_count()>0) await create_timer(0.3).timeout await RenderingServer.frame_post_draw root.get_texture().get_image().save_png("res://logs/soviet-%s.png" % index) if index == 4: WeaponSkins.apply(model,{"soviet_variant":1}) assert(model.get_meta("soviet_model") == "tokarev") await process_frame await RenderingServer.frame_post_draw root.get_texture().get_image().save_png("res://logs/soviet-tokarev.png") WeaponSkins.apply(model,{"attachments":{"optic":1,"muzzle":1,"magazine":1}}) model.free() stage.queue_free() await process_frame print("SOVIET MODELS / VARIANT / ATTACHMENTS PASS") quit()