QodotPlugin / Qodot

Quake .map support for Godot 4.2
MIT License
616 stars 52 forks source link

Upon restart of editor, qodot_fgd.tres problem #162

Open youredead117 opened 1 month ago

youredead117 commented 1 month ago

Hello, I'm reporting an issue with Qodot 4, I'm on Godot 4.2, latest steam version. I've downloaded Qodot from the AssetLib. When I run my godot project without Qodot installed, then install the addon, it works fine until I close Godot and re-open the project. Then whenever I hit the quick or full build buttons for a level it gives this error:

res://addons/qodot/src/nodes/qodot_map.gd:378 - Invalid call. Nonexistent function 'get_entity_definitions' in base 'Resource (QodotFGDFile)'.

Whenever this occurs no occluders or collision is built from the QodotMap node, only the meshes and lights (idk what other entities as I only have added lights).

So far the only fix is uninstalling Qodot addon, then reinstalling for every time I open the godot project.

The odd thing is that the code checks out, at least for me. I looked into the QodotMap node script, and the QodotFGDFile script, and they all have the functions and syntax blah blah. It shouldn't be giving this kind of error. The entity_fgd variable in QodotMap never gets replaced, heck even Ctrl clicking the function in QodotMap brings you to the correct function. Very bizarre.

youredead117 commented 1 month ago

Update: Commenting line 67 - 70 fixes the issue, but omits the base fgd files' purpose. its just a bandage-fix. This time I got a different error: res://addons/qodot/src/resources/game-definitions/fgd/qodot_fgd_file.gd:69 - Invalid call. Nonexistent function 'get_entity_definitions' in base 'Resource (QodotFGDFile)'.

Edit: the same issue is present with no colliders being built, but my custom entities in my own FGD get built. The console error isnt there anymore either. Sorry my first time bug hunting as such so expect this thread to be mostly me editing my own comments lol.

youredead117 commented 1 month ago

UPDATE: I fixed this issue fully by transferring all entity defs from the qodot_fgd.tres file to my custom fgd. I tried before this adding an export var "has_base" (a bool) then adding this: if has_base: search base fgd for entity defs but somewhere it was still searching for entity defs in a base fgd that didnt exist, I enabled "has_base" on my custom fgd with qodot_fgd.tres as the base, and disabled "has_base" on qodot_fgd.tres, but still threw the same error. Anyways its fixed now YAY. still not closed though as its still a bug.

italiatroller90 commented 2 weeks ago

Same problem here, but on Godot 4.3

italiatroller90 commented 2 weeks ago

tried the comment from #156 and it works