diff options
Diffstat (limited to 'games/spacejunk/files')
-rw-r--r-- | games/spacejunk/files/patch-src-SFont.c | 12 | ||||
-rw-r--r-- | games/spacejunk/files/patch-src-physicbody.cpp | 111 |
2 files changed, 123 insertions, 0 deletions
diff --git a/games/spacejunk/files/patch-src-SFont.c b/games/spacejunk/files/patch-src-SFont.c new file mode 100644 index 000000000000..b139751b8364 --- /dev/null +++ b/games/spacejunk/files/patch-src-SFont.c @@ -0,0 +1,12 @@ +Clang compatibility +--- src/SFont.c.orig 2013-06-14 01:28:33.767289275 +0400 ++++ src/SFont.c 2013-06-14 01:39:06.709113401 +0400 +@@ -72,7 +72,7 @@ + return -1; + } + +-Uint32 searchFirstPixel(SDL_Surface* s,int* X,int* Y,int* MinY){ ++void searchFirstPixel(SDL_Surface* s,int* X,int* Y,int* MinY){ + Uint32 bgpixel = GetPixel(s, 0, s->h-1); + + int x=0; diff --git a/games/spacejunk/files/patch-src-physicbody.cpp b/games/spacejunk/files/patch-src-physicbody.cpp new file mode 100644 index 000000000000..a5e891f87a67 --- /dev/null +++ b/games/spacejunk/files/patch-src-physicbody.cpp @@ -0,0 +1,111 @@ +Clang compatibility +--- src/physicbody.cpp.orig 2013-06-14 01:22:11.442112529 +0400 ++++ src/physicbody.cpp 2013-06-14 01:38:02.468909545 +0400 +@@ -20,9 +20,21 @@ + #include "physicbody.h" + #include <math.h> + #include <algorithm> ++#include <vector> + + using namespace std; + ++template<class T> ++class DynArray { ++private: ++ std::vector<T> data; ++ ++public: ++ DynArray(size_t len) : data(len) { } ++ ++ operator const T*() const { return data.data(); } ++ operator T*() { return data.data(); } ++}; + + const double PhysicEngine::G=6.6726e-17; + +@@ -165,7 +180,6 @@ + return acc; + } + +- + void PhysicEngine::_vstep (int delta) { + #define DELTA_LIMIT 3 + #define ERROR_LIMIT 0.001 +@@ -179,11 +193,11 @@ + real tempdelta=delta; + real time=0; + int n=bodies.size(); +- Vector2d accels[n]; ++ DynArray<Vector2d> accels(n); + calculateForces(0,accels); + loadcount++; +- Vector2d temp_pos[n]; +- Vector2d temp_vel[n]; ++ DynArray<Vector2d> temp_pos(n); ++ DynArray<Vector2d> temp_vel(n); + do { + for (vector<PhysicBody*>::iterator j=bodies.begin();j!=bodies.end();j++) { + if (!*j) continue; +@@ -306,12 +320,12 @@ + real PhysicEngine::vstepRK5 (real delta,Vector2d initaccels[]) { + real maxdist=0; + int n=bodies.size(); +- Vector2d accels[n]; +- Vector2d mipos[n]; +- Vector2d k1pos[n]; +- Vector2d k1vel[n]; +- Vector2d k2pos[n]; +- Vector2d k2vel[n]; ++ DynArray<Vector2d> accels(n); ++ DynArray<Vector2d> mipos(n); ++ DynArray<Vector2d> k1pos(n); ++ DynArray<Vector2d> k1vel(n); ++ DynArray<Vector2d> k2pos(n); ++ DynArray<Vector2d> k2vel(n); + for (vector<PhysicBody*>::iterator j=bodies.begin();j!=bodies.end();j++) { + if (!*j || ((*j)->flags & PhysicBody::FIXED)) continue; + mipos[(*j)->id]=(*j)->pos; +@@ -321,8 +335,8 @@ + (*j)->pos=mipos[(*j)->id]+k1pos[(*j)->id]*0.2; + } + calculateForces(delta*0.2,accels); +- Vector2d k3pos[n]; +- Vector2d k3vel[n]; ++ DynArray<Vector2d> k3pos(n); ++ DynArray<Vector2d> k3vel(n); + for (vector<PhysicBody*>::iterator j=bodies.begin();j!=bodies.end();j++) { + if (!*j || ((*j)->flags & PhysicBody::FIXED)) continue; + k2vel[(*j)->id]=accels[(*j)->id]*delta; +@@ -330,8 +344,8 @@ + (*j)->pos=mipos[(*j)->id]+k1pos[(*j)->id]*(3.0/40.0)+k2pos[(*j)->id]*(9.0/40.0); + } + calculateForces(delta*0.3,accels); +- Vector2d k4pos[n]; +- Vector2d k4vel[n]; ++ DynArray<Vector2d> k4pos(n); ++ DynArray<Vector2d> k4vel(n); + for (vector<PhysicBody*>::iterator j=bodies.begin();j!=bodies.end();j++) { + if (!*j || ((*j)->flags & PhysicBody::FIXED)) continue; + k3vel[(*j)->id]=accels[(*j)->id]*delta; +@@ -339,8 +353,8 @@ + (*j)->pos=mipos[(*j)->id]+k1pos[(*j)->id]*0.3+k2pos[(*j)->id]*(-0.9)+k3pos[(*j)->id]*1.2; + } + calculateForces(delta*0.6,accels); +- Vector2d k5pos[n]; +- Vector2d k5vel[n]; ++ DynArray<Vector2d> k5pos(n); ++ DynArray<Vector2d> k5vel(n); + for (vector<PhysicBody*>::iterator j=bodies.begin();j!=bodies.end();j++) { + if (!*j || ((*j)->flags & PhysicBody::FIXED)) continue; + k4vel[(*j)->id]=accels[(*j)->id]*delta; +@@ -348,8 +362,8 @@ + (*j)->pos=mipos[(*j)->id]+k1pos[(*j)->id]*(-11.0/54.0)+k2pos[(*j)->id]*2.5+k3pos[(*j)->id]*(-70.0/27.0)+k4pos[(*j)->id]*(35.0/27.0); + } + calculateForces(delta,accels); +- Vector2d k6pos[n]; +- Vector2d k6vel[n]; ++ DynArray<Vector2d> k6pos(n); ++ DynArray<Vector2d> k6vel(n); + for (vector<PhysicBody*>::iterator j=bodies.begin();j!=bodies.end();j++) { + if (!*j || ((*j)->flags & PhysicBody::FIXED)) continue; + k5vel[(*j)->id]=accels[(*j)->id]*delta; |