Nebukam / PCGExtendedToolkit

PCGEx is a free (libre) Unreal 5 plugin that expands PCG capabilities. It offers a variety of high-performance nodes; with an edge for building relational graphs (Freeform, Delaunay, Voronoi, MST etc) and pathfinding; and much more.
MIT License
91 stars 10 forks source link

Compilation errors on 5.4 #27

Closed njibhu closed 4 months ago

njibhu commented 4 months ago

This is purely informative since 5.4 is not officially out and it might not makes sense to put any effort into supporting it yet (particularly if it's breaking 5.3).

Here's a list of compilation issues on 5.4:

Error   C2039   'priority_queue': is not a member of 'std'  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Graph\Pathfinding\Search\PCGExScoredQueue.h 30
Error   C2039   'vector': is not a member of 'std'  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Graph\Pathfinding\Search\PCGExScoredQueue.h 30
Error   C2275   'PCGExSearch::TScoredQueue::FScoredNode': expected an expression instead of a type  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Graph\Pathfinding\Search\PCGExScoredQueue.h 30
Error   C7568   argument list missing after assumed function template 'priority_queue'  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Graph\Pathfinding\Search\PCGExScoredQueue.h 30
Error   C2062   type 'unknown-type' unexpected  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Graph\Pathfinding\Search\PCGExScoredQueue.h 30
Error   C2238   unexpected token(s) preceding ';'   Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Graph\Pathfinding\Search\PCGExScoredQueue.h 30
Error   C2039   'priority_queue': is not a member of 'std'  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  11
Error   C2275   'PCGExSearch::TScoredQueue::FScoredNode': expected an expression instead of a type  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  11
Error   C2039   'vector': is not a member of 'std'  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  11
Error   C2275   'PCGExSearch::TScoredQueue::FScoredNode': expected an expression instead of a type  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  11
Error   C2059   syntax error: ','   Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  11
Error   C2065   'InternalQueue': undeclared identifier  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  12
Error   C2065   'EmptyQueue': undeclared identifier Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  12
Error   C2065   'InternalQueue': undeclared identifier  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  19
Error   C2065   'InternalQueue': undeclared identifier  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  26
Error   C2065   'InternalQueue': undeclared identifier  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  28
Error   C2737   'TopNode': const object must be initialized Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  28
Error   C2065   'InternalQueue': undeclared identifier  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  29
Error   C2665   'PCGEx::FAttributeGetter<FVector>::Convert': no overloaded function could convert all the argument types    Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    536
Error   C2665   'PCGEx::FAttributeGetter<FVector>::Convert': no overloaded function could convert all the argument types    Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    544
Error   C2665   'PCGEx::FAttributeGetter<double>::Convert': no overloaded function could convert all the argument types Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    536
Error   C2665   'PCGEx::FAttributeGetter<double>::Convert': no overloaded function could convert all the argument types Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    544
Error   C2665   'PCGEx::FAttributeGetter<FVector>::Convert': no overloaded function could convert all the argument types    Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    536
Error   C2665   'PCGEx::FAttributeGetter<FVector>::Convert': no overloaded function could convert all the argument types    Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    544
Error   C2665   'PCGEx::FAttributeGetter<double>::Convert': no overloaded function could convert all the argument types Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    536
Error   C2665   'PCGEx::FAttributeGetter<double>::Convert': no overloaded function could convert all the argument types Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    544
Error   C2665   'PCGEx::FAttributeGetter<double>::Convert': no overloaded function could convert all the argument types Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    536
Error   C2665   'PCGEx::FAttributeGetter<double>::Convert': no overloaded function could convert all the argument types Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    544
Error   C2665   'PCGEx::FAttributeGetter<double>::Convert': no overloaded function could convert all the argument types Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    536
Error   C2665   'PCGEx::FAttributeGetter<double>::Convert': no overloaded function could convert all the argument types Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    544
Error   C2665   'PCGEx::FAttributeGetter<FVector>::Convert': no overloaded function could convert all the argument types    Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    536
Error   C2665   'PCGEx::FAttributeGetter<FVector>::Convert': no overloaded function could convert all the argument types    Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    544
Error   C2665   'PCGEx::FAttributeGetter<double>::Convert': no overloaded function could convert all the argument types Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    536
Error   C2665   'PCGEx::FAttributeGetter<double>::Convert': no overloaded function could convert all the argument types Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Data\PCGExAttributeHelpers.h    544
Nebukam commented 4 months ago

Hmmm yeah it's not ready for 5.4 yet :( 5.4 introduces new data types that aren't supported by PCGEx yet, I'll see if I can push a workaround so it compiles without supporting the new attributes.

The 'prep 5.4' was just a preparation for some classes that I knew were deprecated but not much beyond that :(

Nebukam commented 4 months ago

Hey @njibhu! I pushed an update that should hopefully fix the errors you're getting. I haven't compiled the engine myself, and fixed it based on the changes I could see on Epic' github which is less than optimal.

Let me know if this fixes it on your end!

njibhu commented 4 months ago

Thanks! It did solve quite a few. Here's an updated list:

Error   C2039   'priority_queue': is not a member of 'std'  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Graph\Pathfinding\Search\PCGExScoredQueue.h 30
Error   C2039   'vector': is not a member of 'std'  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Graph\Pathfinding\Search\PCGExScoredQueue.h 30
Error   C2275   'PCGExSearch::TScoredQueue::FScoredNode': expected an expression instead of a type  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Graph\Pathfinding\Search\PCGExScoredQueue.h 30
Error   C7568   argument list missing after assumed function template 'priority_queue'  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Graph\Pathfinding\Search\PCGExScoredQueue.h 30
Error   C2062   type 'unknown-type' unexpected  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Graph\Pathfinding\Search\PCGExScoredQueue.h 30
Error   C2238   unexpected token(s) preceding ';'   Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\Graph\Pathfinding\Search\PCGExScoredQueue.h 30
Error   C2039   'priority_queue': is not a member of 'std'  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  11
Error   C2275   'PCGExSearch::TScoredQueue::FScoredNode': expected an expression instead of a type  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  11
Error   C2039   'vector': is not a member of 'std'  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  11
Error   C2275   'PCGExSearch::TScoredQueue::FScoredNode': expected an expression instead of a type  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  11
Error   C2059   syntax error: ','   Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  11
Error   C2065   'InternalQueue': undeclared identifier  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  12
Error   C2065   'EmptyQueue': undeclared identifier Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  12
Error   C2065   'InternalQueue': undeclared identifier  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  19
Error   C2065   'InternalQueue': undeclared identifier  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  26
Error   C2065   'InternalQueue': undeclared identifier  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  28
Error   C2737   'TopNode': const object must be initialized Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  28
Error   C2065   'InternalQueue': undeclared identifier  Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Private\Graph\Pathfinding\Search\PCGExScoredQueue.cpp  29

I'm puzzled by the std errors, I don't have these on 5.3, but I fail to see why it's an issue with 5.4

Nebukam commented 4 months ago

Hmm a quick internet search suggest that I should explicitely include the following headers:

#include <queue>
#include <vector> 

Sounds like something gets automatically included in 5.3 but isn't in 5.4. I submitted a fix, which hopefully gets rid of these :/

njibhu commented 4 months ago

Of course that makes a lot of sense! Almost there:

Error   C2440   'return': cannot convert from 'const T' to 'double' Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\PCGExMath.h 608
Error   C2679   binary '=': no operator found which takes a right-hand operand of type 'const double' (or there is no acceptable conversion)    Plugins\PCGExtendedToolkit\Source\PCGExtendedToolkit\Public\PCGExMath.h 640
njibhu commented 4 months ago

Fixed! Thanks a lot

Nebukam commented 4 months ago

Haaaaah thanks for the update 🙏