Open GeraldRyan opened 7 months ago
The Geometry util has undergone some major reworks and because of that it has broken this example. You can fix it by doing two things:
#include "utilities/olcUTIL_Geometry2D.h"
and #include "olcPixelGameEngine.h"
in olcUTIL_Animate2D.h
and TEST_Animate2D.cpp
so they look like this:
#include "utilities/olcUTIL_Animate2D.h"
#include "olcPixelGameEngine.h"
#define OLC_IGNORE_VEC2D
in TEST_Animate2D.cpp
above #include "utilities/olcUTIL_Animate2D.h"
Should be good to go after that.
It compiled! And it ran but it immediately got a segfault
[1] 30019 segmentation fault (core dumped) ./test_animate
Hey that's still progress
This is because you have to supply your own image to load (it tries to load "./assets/MegaSprite1.png"
). I don't have the image this example provides, but if you have a spritesheet, you can tailor the animation system to work for that sheet using the example file as a guide.
As to sprites and spritesheets, I'm new to them. I don't want to get too much down that rabbit hole because I'm more interested in the math and algorithms vs the game design but they're on my radar now as a thing to consider.
I plugged in a static creative commons licensed mario png and it works, albiet probably not as expected. It doesn't crash. It shards the thing during animation in a kind of cool way.
Anyway I opened a PR for these fixes. Feel free to update with a better spritesheet or make changes!!!
In addition to the above I needed to add #include <array>
to the file olcUTIL_Geometry2D.h
and to add template
to turn
return !(p.x < r.pos.x || p.y < r.pos.y ||
into
return !(p.template x < r.pos.x || p.template y < r.pos.y ||
in file olcUTIL_Geometry2D.h
as well.
(using "g++ (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0" under Ubuntu 22.04 LTS)
Regarding the olcUTIL_Geometry2d.h
it should be noted that has a separate repo where development on it is actively progressing. Before patching the header here, check to see that the issue hasn't already been solved in the other repo.
Unfortunately, the header provided in the PGE repo doesn't match.
g++ -o test_quickGUI examples/TEST_QuickGUI.cpp -I. -lX11 -lGL -lpthread -lpng -lstdc++fs -std=c++17
g++ -o test_quickGUI examples/TEST_Animate2D.cpp -I. -lX11 -lGL -lpthread -lpng -lstdc++fs -std=c++17
we require C++20, you're compiling with C++17
Compilation followed the Wiki under "https://github.com/OneLoneCoder/olcPixelGameEngine/wiki/Compiling-on-Linux#building":
g++ -o olcExampleProgram olcExampleProgram.cpp -lX11 -lGL -lpthread -lpng -lstdc++fs -std=c++17
See also the latest version of "https://github.com/OneLoneCoder/olcPixelGameEngine/blob/master/olcPixelGameEngine.h#L73":
Compiling in Linux
You will need a modern C++ compiler, so update yours! To compile use the command: g++ -o YourProgName YourSource.cpp -lX11 -lGL -lpthread -lpng -lstdc++fs -std=c++17
Where is the "C++20" coming from? Maybe you are referring to another branch?
Good to point that out. That's just for PGE itself, the extensions and utilities might have differing requirements. The wiki doesn't reflect that..... yet
Great codebase and fun project. I am pretty new to this and to C++ generally
As the subject says, the TEST_ANIMATE2D does not work. If you could point me in the right direction of a fix, I can maybe do a PR - if the fix is simple.
The other example files compile no problem, with the following command
g++ -o test_quickGUI examples/TEST_QuickGUI.cpp -I. -lX11 -lGL -lpthread -lpng -lstdc++fs -std=c++17
When I do
g++ -o test_quickGUI examples/TEST_Animate2D.cpp -I. -lX11 -lGL -lpthread -lpng -lstdc++fs -std=c++17
I get the following list of errors: