e7299b17e9
Stack installed: - netfox v1.35.3 (core + extras + noray + internals) - godot-jolt v0.16.0-stable Architecture: - Server: ENet transport (works headless, no netfox deps) - Client/Editor: netfox rollback (RollbackSynchronizer, TickInterpolator) New/modified: - docs/migration-netfox-plan.md — migration architecture - scripts/network/network_manager.gd — netfox-aware ENet fallback - scripts/network/player.gd — clean base player - client/characters/player_netfox.gd — rollback player w/ WeaponManager - client/characters/input/player_net_input.gd — BaseNetInput subclass - client/characters/character/fps_character_controller.gd — netfox input feed - client/weapons/ — weapon data, registry, TacticalWeaponHitscan, WeaponManager - client/scripts/round_replicator.gd — client-side round state bridge - server/scripts/round_manager.gd — improved state machine - server/scripts/plugin_api/plugin_manager.gd — refined plugin system - config: enemy_tag, ally_tag for meatball targeting Removed: old C++ SimulationServer GDExtension (replaced by netfox rollback)
76 lines
3.3 KiB
GDScript
76 lines
3.3 KiB
GDScript
@tool
|
|
extends Node
|
|
|
|
func _ready():
|
|
print("=== LightmapGI Method Check (Godot 4.2) ===")
|
|
|
|
# Check bake method via ClassDB
|
|
var has_bake = ClassDB.class_has_method("LightmapGI", "bake")
|
|
print("ClassDB: LightmapGI has bake()? ", has_bake)
|
|
|
|
# Actually instantiate and check
|
|
var scene = load("res://assets/scenes/modular/kit_demo.tscn")
|
|
if not scene:
|
|
printerr("Cannot load scene")
|
|
get_tree().quit(1)
|
|
return
|
|
|
|
var inst = scene.instantiate()
|
|
get_tree().root.add_child(inst)
|
|
|
|
var lgi = null
|
|
for c in inst.get_children():
|
|
if c is LightmapGI:
|
|
lgi = c
|
|
break
|
|
|
|
if lgi:
|
|
var has_bake_runtime = lgi.has_method("bake")
|
|
print("Runtime: LightmapGI has bake()? ", has_bake_runtime)
|
|
if has_bake_runtime:
|
|
print("OK: bake() is available!")
|
|
else:
|
|
print("NOT AVAILABLE: bake() is not in the runtime API")
|
|
|
|
# List custom methods (not from Node3D)
|
|
var custom = []
|
|
for m in lgi.get_method_list():
|
|
var name = m.get("name") if m is Dictionary else ""
|
|
# Skip Node3D/Node/Object methods
|
|
if name.begins_with("set_") or name.begins_with("get_") or name.begins_with("is_"):
|
|
if name not in [
|
|
"set_name", "get_name", "set_visible", "is_visible", "is_visible_in_tree",
|
|
"set_process", "is_processing", "set_physics_process", "is_physics_processing",
|
|
"set_owner", "get_owner", "set_transform", "get_transform",
|
|
"set_position", "get_position", "set_rotation", "get_rotation",
|
|
"set_scale", "get_scale", "set_global_transform", "get_global_transform",
|
|
"set_global_position", "get_global_position", "set_global_basis", "get_global_basis",
|
|
"set_meta", "get_meta", "has_meta", "set_script", "get_script",
|
|
"set_block_signals", "is_blocking_signals", "set_message_translation",
|
|
"set_notify_transform", "is_transform_notification_enabled",
|
|
"set_notify_local_transform", "is_local_transform_notification_enabled",
|
|
"set_as_top_level", "is_set_as_top_level", "set_disable_scale", "is_scale_disabled",
|
|
"set_layer_mask", "get_layer_mask", "set_layer_mask_value", "get_layer_mask_value",
|
|
"set_sorting_offset", "get_sorting_offset", "set_sorting_use_aabb_center", "is_sorting_use_aabb_center",
|
|
"set_editable_instance", "is_editable_instance", "set_scene_file_path", "get_scene_file_path",
|
|
"set_unique_name_in_owner", "is_unique_name_in_owner",
|
|
"set_editor_description", "get_editor_description",
|
|
"set_rotation_degrees", "get_rotation_degrees", "set_rotation_order", "get_rotation_order",
|
|
"set_rotation_edit_mode", "get_rotation_edit_mode",
|
|
"set_physics_process_priority", "get_physics_process_priority",
|
|
"set_process_priority", "get_process_priority", "set_process_thread_group", "get_process_thread_group",
|
|
"set_process_thread_messages", "get_process_thread_messages",
|
|
"set_process_thread_group_order", "get_process_thread_group_order",
|
|
"set_physics_interpolation_mode", "get_physics_interpolation_mode",
|
|
"set_auto_translate_mode", "get_auto_translate_mode",
|
|
"set_display_folded", "is_displayed_folded",
|
|
"set_process_mode", "get_process_mode",
|
|
"set_process_internal", "is_processing_internal",
|
|
"set_physics_process_internal", "is_physics_processing_internal",
|
|
"set_visibility_parent", "get_visibility_parent",
|
|
]:
|
|
custom.append(name)
|
|
print("LightmapGI-specific methods: ", custom)
|
|
|
|
get_tree().quit(0)
|