TriAxis-Games / RealtimeMeshComponent

Unreal Engine 5 plugin component for rendering runtime generated content.
https://rmc.triaxis.games/
Other
1.57k stars 412 forks source link

Unable to compile the plugin with UE 5.4.0.2. Fedora Linux 40 #286

Open HoneyHazard opened 3 months ago

HoneyHazard commented 3 months ago

UE Engine v 5.4.0.2 Fedora Linux 40

Tried both the marketplace version and v5.2.0 release on Github

Am I missing some prerequisite?

------ Building 3 action(s) started ------
[1/3] Compile Module.RealtimeMeshEditor.cpp
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:63:2: error: use of undeclared identifier 'FEditorDelegates'
        FEditorDelegates::OnMapOpened.AddLambda([this](const FString&, bool)
        ^
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:67:2: error: use of undeclared identifier 'FEditorDelegates'
        FEditorDelegates::OnMapLoad.AddLambda([this](const FString&, FCanLoadMap&)
        ^
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:67:63: error: unknown type name 'FCanLoadMap'
        FEditorDelegates::OnMapLoad.AddLambda([this](const FString&, FCanLoadMap&)
                                                                     ^
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:77:6: error: use of undeclared identifier 'GEditor'; did you mean 'GIsEditor'?
        if (GEditor && LumenUseCheckHandle.IsValid())
            ^~~~~~~
            GIsEditor
/mnt/data/unreal/Engine/Source/Runtime/Core/Public/CoreGlobals.h:213:22: note: 'GIsEditor' declared here
extern CORE_API bool GIsEditor;
                     ^
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:80:7: error: use of undeclared identifier 'GEditor'; did you mean 'GIsEditor'?
                if (GEditor->IsTimerManagerValid())
                    ^~~~~~~
                    GIsEditor
/mnt/data/unreal/Engine/Source/Runtime/Core/Public/CoreGlobals.h:213:22: note: 'GIsEditor' declared here
extern CORE_API bool GIsEditor;
                     ^
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:80:16: error: member reference type 'bool' is not a pointer
                if (GEditor->IsTimerManagerValid())
                    ~~~~~~~  ^
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:82:4: error: use of undeclared identifier 'GEditor'; did you mean 'GIsEditor'?
                        GEditor->GetTimerManager().Get().ClearTimer(LumenUseCheckHandle);
                        ^~~~~~~
                        GIsEditor
/mnt/data/unreal/Engine/Source/Runtime/Core/Public/CoreGlobals.h:213:22: note: 'GIsEditor' declared here
extern CORE_API bool GIsEditor;
                     ^
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:82:13: error: member reference type 'bool' is not a pointer
                        GEditor->GetTimerManager().Get().ClearTimer(LumenUseCheckHandle);
                        ~~~~~~~  ^
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:199:7: error: use of undeclared identifier 'GEditor'; did you mean 'GIsEditor'?
                if (GEditor && !LumenUseCheckHandle.IsValid())
                    ^~~~~~~
                    GIsEditor
/mnt/data/unreal/Engine/Source/Runtime/Core/Public/CoreGlobals.h:213:22: note: 'GIsEditor' declared here
extern CORE_API bool GIsEditor;
                     ^
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:202:8: error: use of undeclared identifier 'GEditor'; did you mean 'GIsEditor'?
                        if (GEditor->IsTimerManagerValid())
                            ^~~~~~~
                            GIsEditor
/mnt/data/unreal/Engine/Source/Runtime/Core/Public/CoreGlobals.h:213:22: note: 'GIsEditor' declared here
extern CORE_API bool GIsEditor;
                     ^
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:202:17: error: member reference type 'bool' is not a pointer
                        if (GEditor->IsTimerManagerValid())
                            ~~~~~~~  ^
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:204:5: error: use of undeclared identifier 'GEditor'; did you mean 'GIsEditor'?
                                GEditor->GetTimerManager().Get().SetTimer(LumenUseCheckHandle,
                                ^~~~~~~
                                GIsEditor
/mnt/data/unreal/Engine/Source/Runtime/Core/Public/CoreGlobals.h:213:22: note: 'GIsEditor' declared here
extern CORE_API bool GIsEditor;
                     ^
In file included from /home/admin/unreal/vsc_experiments_ue5/minimal_0/Plugins/RuntimeMeshComponent/Intermediate/Build/Linux/x64/UnrealEditor/Development/RealtimeMeshEditor/Module.RealtimeMeshEditor.cpp:2:
/mnt/data/unreal/vsc_experiments_ue5/vsc_plugins/RuntimeMeshComponent/Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp:204:14: error: member reference type 'bool' is not a pointer
                                GEditor->GetTimerManager().Get().SetTimer(LumenUseCheckHandle,
                                ~~~~~~~  ^
13 errors generated.
HoneyHazard commented 3 months ago

Okay, I see now there was a commit f4f3c8d63f0042f6eba4e63ed93674de0e521748, which says it "added missing include" of Editor.h. But, unfortunately, it seems to have done the opposite, and has, in fact, removed the crucial include line, and has thus broken the compilation in master. And, I believe, the 5.2.0 tag and the marketplace version are also failing because of missing #include "Editor.h". I hope you fix this soon and more folks can enjoy your wonderful plugin fresh out of the box :)

executionunit commented 3 months ago

I'm building from master (in the pro repo) in Windows and it builds/runs fine in dev and shipping. Kind of implies there is a bug in UnrealBuiltTool or Epics header guards somewhere. I can confirm that adding #include "Editor.h" in to Source/RealtimeMeshEditor/Private/RealtimeMeshEditor.cpp doesn't break the windows build. Guess it's just one of those things.

Why not make a PR with the include back in?