Update Template to use a separate compile unit for pixelGameEngine
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
b28d48eff1
commit
a002c81bce
@ -1,4 +1,4 @@
|
||||
#Compiles the entire program then runs it, producing an executable. If the "test" argument is included, will try and run tests too (in the test folder)
|
||||
#Compiles the entire program then runs it, producing an executable. If the "test" argument is included, will try and run tests too (in the test folder). If the "full" argument is included, it will recopmile the PixelGameEngine (should it change)
|
||||
#C++
|
||||
printf "Running program...\n\n\n"
|
||||
output=$(dpkg -l | grep libx11-dev)
|
||||
@ -6,16 +6,28 @@ if [[ -z $output ]]
|
||||
then
|
||||
sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev
|
||||
fi
|
||||
if [ ! -f "pixelGameEngine.o" ]
|
||||
then
|
||||
printf "Pixel Game Engine compile object missing. Compiling for the first time..."
|
||||
g++ -c pixelGameEngine.cpp
|
||||
fi
|
||||
if [ "$1" = "test" ]
|
||||
then
|
||||
printf "Running tests...\n"
|
||||
echo "#define TEST_SUITE" > ./test/test.h
|
||||
if g++ $(find . -type f -name "*.cpp") ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
|
||||
if g++ $(find . -type f -name "*.cpp" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
|
||||
./${PROJECT_NAME} "$@"
|
||||
fi
|
||||
elif [ "$1" = "full" ]
|
||||
then
|
||||
echo "" > ./test/test.h
|
||||
g++ -c pixelGameEngine.cpp
|
||||
if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
|
||||
./${PROJECT_NAME} "$@"
|
||||
fi
|
||||
else
|
||||
echo "" > ./test/test.h
|
||||
if g++ $(find . -type f -name "*.cpp" -not -path "./test/*") ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
|
||||
if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
|
||||
./${PROJECT_NAME} "$@"
|
||||
fi
|
||||
fi
|
||||
|
@ -1,7 +1,7 @@
|
||||
build.sh:d5e4e98a6f677aa0a9759ba0afb2fb77 -
|
||||
build.sh:f7da5b6f54c56658f5410e0df797b5a7 -
|
||||
commit.sh:d03a46e721060c22ccb146e19d27e70a -
|
||||
debug.sh:849488515cab075948653c15eec4177b -
|
||||
lines.sh:3b907786f7fc9204025993016c9080de -
|
||||
release.sh:6a96fb84ba64ed60d31be436ec069f05 -
|
||||
release.sh:0ab321c3fa2f1a1b2f03b1aec3bce816 -
|
||||
temp:d41d8cd98f00b204e9800998ecf8427e -
|
||||
web.sh:b982212b88b80a59ad607b47d2ff3e94 -
|
||||
web.sh:e317e1d492d00517a0ac0e460239daa0 -
|
||||
|
@ -1,4 +1,4 @@
|
||||
#Creates a release build that focuses on high runtime performance.
|
||||
#Creates a release build that focuses on high runtime performance. Use "full" argument to completely rebuild PGE.
|
||||
#C++
|
||||
printf "Running program...\n\n\n"
|
||||
output=$(dpkg -l | grep libx11-dev)
|
||||
@ -6,7 +6,15 @@ if [[ -z $output ]]
|
||||
then
|
||||
sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev
|
||||
fi
|
||||
if g++ $(find . -type f -name "*.cpp" -not -path "./test/*") ${CUSTOM_PARAMS} -O3 -s -DNDEBUG -o ${PROJECT_NAME}; then
|
||||
if [ "$1" == "full" ]; then
|
||||
rm "pixelGameEngine.o"
|
||||
fi
|
||||
if [ ! -f "pixelGameEngine.o" ]
|
||||
then
|
||||
printf "Pixel Game Engine compile object missing. Compiling for the first time..."
|
||||
g++ -c pixelGameEngine.cpp
|
||||
fi
|
||||
if g++ $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine.o ${CUSTOM_PARAMS} -o ${PROJECT_NAME}; then
|
||||
./${PROJECT_NAME} "$@"
|
||||
fi
|
||||
printf "\n\n"
|
||||
|
@ -1,23 +1,30 @@
|
||||
#Compiles emscripten instance of this project for the web.
|
||||
#Compiles emscripten instance of this project for the web. Use "full" argument if your PGE has to be completely rebuilt. Use "headless" argument for a headless version.
|
||||
#C++
|
||||
output=$(dpkg -l | grep libx11-dev)
|
||||
if [[ -z $output ]]
|
||||
then
|
||||
sudo apt install libx11-dev libpulse-dev mesa-common-dev libpng-dev
|
||||
fi
|
||||
if [[ "$1" == "full" || "$2" == "full" ]]; then
|
||||
rm "pixelGameEngine_wasm.o"
|
||||
fi
|
||||
if [ ! -f "pixelGameEngine_wasm.o" ]
|
||||
then
|
||||
printf "Pixel Game Engine compile object missing. Compiling for the first time..."
|
||||
em++ -std=c++17 -O2 -s ALLOW_MEMORY_GROWTH=1 -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 -c pixelGameEngine.cpp -o pixelGameEngine_wasm.o
|
||||
fi
|
||||
if [ -d "assets" ]; then
|
||||
em++ -std=c++17 -O2 -s ALLOW_MEMORY_GROWTH=1 -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 $(find . -type f -name "*.cpp" -not -path "./test/*") -o ${PROJECT_NAME}.html -I pixelGameEngine.h --preload-file ./assets
|
||||
em++ -std=c++17 -O2 -s ALLOW_MEMORY_GROWTH=1 -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html --preload-file ./assets
|
||||
else
|
||||
em++ -std=c++17 -O2 -s ALLOW_MEMORY_GROWTH=1 -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 $(find . -type f -name "*.cpp" -not -path "./test/*") -o ${PROJECT_NAME}.html -I pixelGameEngine.h
|
||||
em++ -std=c++17 -O2 -s ALLOW_MEMORY_GROWTH=1 -s MAX_WEBGL_VERSION=2 -s MIN_WEBGL_VERSION=2 -s USE_SDL_MIXER=2 -s USE_LIBPNG=1 $(find . -type f -name "*.cpp" -not -path "./test/*" -not -name "pixelGameEngine.cpp") pixelGameEngine_wasm.o -o ${PROJECT_NAME}.html
|
||||
fi
|
||||
|
||||
cp buildtemplate.html ${PROJECT_NAME}.html
|
||||
sed -i "s/_REPLACEME_/$PROJECT_NAME.js/" ${PROJECT_NAME}.html
|
||||
|
||||
if [ "$1" == "headless" ]; then
|
||||
if [[ "$1" == "headless" || "$2" == "headless" ]]; then
|
||||
echo "Running as headless web server"
|
||||
emrun --no_browser ${PROJECT_NAME}.html
|
||||
else
|
||||
emrun --serve_after_close ${PROJECT_NAME}.html
|
||||
fi
|
||||
|
||||
fi
|
Binary file not shown.
12
Polygon.cpp
Normal file
12
Polygon.cpp
Normal file
@ -0,0 +1,12 @@
|
||||
#include "Polygon.h"
|
||||
|
||||
Polygon::Polygon(std::initializer_list<vf2d>ls){
|
||||
points.resize(ls.size());
|
||||
std::copy(ls.begin(),ls.end(),points.begin());
|
||||
}
|
||||
|
||||
void Polygon::DrawPolygon(){
|
||||
for (int i=0;i<points.size();i++){
|
||||
|
||||
}
|
||||
}
|
10
Polygon.h
Normal file
10
Polygon.h
Normal file
@ -0,0 +1,10 @@
|
||||
#include "pixelGameEngine.h"
|
||||
|
||||
using namespace olc;
|
||||
|
||||
class Polygon{
|
||||
public:
|
||||
std::vector<vf2d>points;
|
||||
Polygon(std::initializer_list<vf2d>ls);
|
||||
void DrawPolygon();
|
||||
};
|
81
main.cpp
81
main.cpp
@ -1,11 +1,15 @@
|
||||
#define OLC_PGE_APPLICATION
|
||||
#include "pixelGameEngine.h"
|
||||
#include "olcutils.h"
|
||||
#include "Polygon.h"
|
||||
|
||||
using namespace olc;
|
||||
|
||||
#define WIDTH 640
|
||||
#define HEIGHT 480
|
||||
|
||||
class Example : public olc::PixelGameEngine
|
||||
{
|
||||
|
||||
|
||||
public:
|
||||
Example()
|
||||
{
|
||||
@ -13,76 +17,39 @@ public:
|
||||
}
|
||||
|
||||
public:
|
||||
bool RayVsRect(const vf2d ray_origin, const vf2d ray_dir, const olc::utils::geom2d::rect<float> target, vf2d&contact_point, vf2d&contact_normal, float&t_hit_near){
|
||||
|
||||
contact_normal = { 0, 0 };
|
||||
contact_point = { 0, 0 };
|
||||
|
||||
vf2d t_near = {(target.pos.x - ray_origin.x) / ray_dir.x, (target.pos.y - ray_origin.y) / ray_dir.y};
|
||||
vf2d t_far = {(target.pos.x + target.size.x - ray_origin.x) / ray_dir.x, (target.pos.y + target.size.y - ray_origin.y) / ray_dir.y};
|
||||
|
||||
if (t_near.x > t_far.x) {float b; b = t_near.x; t_near.x = t_far.x; t_far.x = b;};
|
||||
if (t_near.y > t_far.y) {float b; b = t_near.y; t_near.y = t_far.y; t_far.y = b;};
|
||||
|
||||
if (t_near.x > t_far.y || t_near.y > t_far.x) return false;
|
||||
|
||||
t_hit_near = fmax(t_near.x, t_near.y);
|
||||
float t_hit_far = fmin(t_far.x, t_far.y);
|
||||
|
||||
if (t_hit_far < 0) return false;
|
||||
|
||||
contact_point.x = ray_origin.x + t_hit_near * ray_dir.x;
|
||||
contact_point.y = ray_origin.y + t_hit_near * ray_dir.y;
|
||||
|
||||
if (t_near.x > t_near.y)
|
||||
if ( 1.0f / ray_dir.x < 0)
|
||||
contact_normal = { 1, 0 };
|
||||
else
|
||||
contact_normal = { -1, 0};
|
||||
else
|
||||
if ( t_near.x < t_near.y)
|
||||
if ( 1.0f / ray_dir.y < 0)
|
||||
contact_normal = { 0, 1 };
|
||||
else
|
||||
contact_normal = { 0, -1 };
|
||||
|
||||
return true;
|
||||
|
||||
|
||||
}
|
||||
vf2d originPoint={16,16};
|
||||
bool OnUserCreate() override
|
||||
{
|
||||
// Called once at the start, so create things here
|
||||
Polygon poly{{30,30},{20,20},{-7,6}};
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OnUserUpdate(float fElapsedTime) override
|
||||
{
|
||||
vf2d velocity={(GetKey(D).bHeld-GetKey(A).bHeld)*20*fElapsedTime,(GetKey(S).bHeld-GetKey(W).bHeld)*20*fElapsedTime};
|
||||
vf2d contact_point;
|
||||
vf2d contact_normal;
|
||||
float t_hit_near;
|
||||
Clear(BLACK);
|
||||
return true;
|
||||
}
|
||||
|
||||
Clear(Pixel(64,64,255));
|
||||
if (!olc::utils::geom2d::overlaps(olc::utils::geom2d::circle<float>{originPoint+velocity,5},olc::utils::geom2d::rect<float>{{32,32},{64,32}})) {
|
||||
originPoint+=velocity;
|
||||
DrawCircle(originPoint,5);
|
||||
} else {
|
||||
DrawCircle(originPoint,5,RED);
|
||||
}
|
||||
DrawLine(originPoint,GetMousePos());
|
||||
|
||||
DrawRect({32,32},{64,32},RayVsRect(originPoint, GetMousePos()-originPoint, olc::utils::geom2d::rect<float>{{32,32},{64,32}},contact_point,contact_normal,t_hit_near)&&t_hit_near<1?YELLOW:WHITE);
|
||||
bool OnUserDestroy()override{
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
enum Direction{
|
||||
RIGHT,
|
||||
DOWN,
|
||||
LEFT,
|
||||
UP
|
||||
};
|
||||
|
||||
struct Data{
|
||||
int x,y;
|
||||
};
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
{
|
||||
Example demo;
|
||||
if (demo.Construct(128, 120, 8, 8))
|
||||
if (demo.Construct(640, 480, 4, 4))
|
||||
demo.Start();
|
||||
|
||||
return 0;
|
||||
|
2
pixelGameEngine.cpp
Normal file
2
pixelGameEngine.cpp
Normal file
@ -0,0 +1,2 @@
|
||||
#define OLC_PGE_APPLICATION
|
||||
#include "pixelGameEngine.h"
|
BIN
pixelGameEngine.o
Normal file
BIN
pixelGameEngine.o
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user