From 9dee043d9592f3a22aab5faeb6d9b4f7f7a04f17 Mon Sep 17 00:00:00 2001 From: swim67667 <150874399+Swim67667@users.noreply.github.com> Date: Wed, 24 Jun 2026 12:47:00 -0400 Subject: [PATCH] less messed up collision --- src/collision.c | 31 +++++++++++++++---------------- src/world.h | 2 ++ wrldboxMacOS | Bin 52336 -> 52336 bytes 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/collision.c b/src/collision.c index 7886957..a5c32b1 100644 --- a/src/collision.c +++ b/src/collision.c @@ -7,42 +7,41 @@ void checkCollision(){ for(int u=0; u<=MAX_ENTITIES-1; u++){ Entity *en1 = &entities[u]; - for(int j=1; j<=MAX_ENTITIES-1; j++){ + if(!en1->active){ + continue; + } + for(int j=u+1; j<=MAX_ENTITIES-1; j++){ if(u!=j){ Entity *en2 = &entities[j]; - if (fabsf(en1->position.x - en2->position.x) < (en1->size * 0.5f + en2->size * 0.5f)) + if(!en2->active){ + continue; + } + if (fabsf(en1->position.x - en2->position.x) < (en1->size * 0.5f + en2->size * 0.5f) && fabsf(en1->position.y - en2->position.y) < (en1->size * 0.5f + en2->size * 0.5f)) { + + float forcex=fabs(((en1->mass+en2->mass)/2)*((((en1->velocity.x)+(scale*1.5))+((en2->velocity.x)+(scale*1.5)))/2)+((en1->force.x+en2->force.x)/2))*(scale); + float forcey=fabs(((en1->mass+en2->mass)/2)*((((en1->velocity.y)+(scale*1.5))+((en2->velocity.y)+(scale*1.5)))/2))*(scale); if(en1->position.x < en2->position.x){ ApplyForce( en1, - (Vector2){-10000, 0} + (Vector2){-forcex, -forcey} ); ApplyForce( en2, - (Vector2){10000, 0} + (Vector2){forcex, forcey} ); } else{ ApplyForce( en1, - (Vector2){10000, 0} + (Vector2){forcex, -forcey} ); ApplyForce( en2, - (Vector2){-10000, 0} + (Vector2){-forcex, forcey} ); } } - // if(fabsf(en1->position.y - en2->position.y) < (en1->size * 0.5f + en2->size * 0.5f)){ - // ApplyForce( - // en1, - // (Vector2){0, 10000} - // ); - // ApplyForce( - // en2, - // (Vector2){0, -10000} - // ); - // } } } } diff --git a/src/world.h b/src/world.h index 5df9310..4cd9163 100644 --- a/src/world.h +++ b/src/world.h @@ -12,6 +12,8 @@ extern bool isSimulating; extern float simTime; +extern const float scale; + extern const float MAX_PLAYER_SPEED; extern const float PLAYER_SPEED_FACTOR; diff --git a/wrldboxMacOS b/wrldboxMacOS index 44a642586a44c1a9eae151634d9110b646f9b362..39673c4f92914ac4199fe11332fe7c8702592d8d 100755 GIT binary patch delta 1771 zcmZ8h3v5(H6uobD%f8a3-G7&U-gdk61Jp>Rgu;H_>xYsOD?b&a(3UPm)Y65b*s8e2 z51^8;>ogGwVohmMK$GegvXMSnX(1ReKvE-OjEkQ{p^2qJAbh>E?-huXyt((>bI+YS zZzeOkTQj;_6S_beY~hPlrf4<*2LL>qa744|6P(W!6O`~ZB?>WtzQy^h{SGBOMGZ4d zXt6Gnj&eEH3o6^8vJ5BKh(y|mL0taXzV5)xclNCG*gx6Y{sTRwEhRf9Mo7{o!rAF& zT`s+2Gq}G5u=EbrNBJZ$_6`bBYz%Q-l)tOnSY(B#6iQ zetV;E0PE!CNixgL&y#|3Phq~$gNyWFGFU1c5NmiK2Hr1#)F^ZfW)Co74mOrpB+;Pj zL350APL^aB*5GhqCtBxtLm2;mLr!eSiOm3?u^M;R@IVASVq7pj9b}rrTY^1A`8{2@ zLf7D`0g#+R+y!!cI{qT&7ohKwVxilZ#;VW9` z?9g>AxsG-vet0$eKyrs~p`SRvOFnu`ZzEmq$gbotM~>X1xha0KSftxiwvo7-rs?;P zJ8pVNKaF@i^hf;yvd%+YlinnIJ+ymL3%TZ@=F|lf+r8mrEIqZxOP^2e)rO$cOU-GO z=)}CVHmwAmYhFqdPN|QcPB?8osxf>`SPO;^iBY6WjZYD$NV|ciytPR);yBDSfsV)Tv8@Rg60=Fa^6R;SgLX# zDLqduT?jA=$&!p)2~EA~qrY17Xq$B&tAETYkVK?P(Pz_2TMgmF2(?*xg3rc5AwOe= z21v<7;MSP{O3k2o1JC(_1-KDwxjW1JQ`ItT`LSV0S+gxfFD+sFSQ zeG}-&U{-KQebw}Mb<*&j#U?9npq*hYz&VxAQTgFag)dTZrTW6URh)%FECbaHqyCht zU!n3dvJ}2a!G4&Mp#(Onf|x4UqT(|u-lgIJ74KIHKuFc&!_aOi z#t_};u1;e#f#@GKGX~Z_)=ZixA8`xW0ts1&TP7wD*~SJ_OmLgB^ZM>KZ*tE$zjJ=) z_wIZ5-nV*zU%kK&%n>jK?z(i<=>Qx62$I23olc9nGMy(wPOr&X@MO?FuFP0vmeW}* zEnz~7lxcL8vl@F?)z7LDj#fh==^=@&+CT2xDza_9R3{W4n~Y^;zJ47N z#7K~@Tj$V&b+b8!murJq6X2Bl)OgqjT()^W4d)FaPCUsY!sgBu&Be_vOKfu!KLC47$dsvTSXC4pZRaMrK%yC0)JfD=FTFx)B$ z{E4xEvC!b87ELm-+CnSp07o<%v@gDi%sA;tAquzvzc(`+N7Hfq;YkR=;E zp*c#@?UdKHlWsfh(pIRS*aIq*%l+0)?`VUHVK6voSK>|#Ltne57ZPI?!U&H-2jl^DTS8OZH) z(jBH3=v?wHN#9~JlW4{z_h-08U5(m`egaT@TQs z2kx{XRAC*pggUGqE)**+9?xGW1s>)L@wk_}>vy_e*$t|Wj<#Nx*Vohn8Xi`q`r39h z3wCN6GrLA##CS={PM4sWD8knE!`=J6zP4s~t82H<`%ZgvOEWa0ti)QD%#V^8E=F_R zDw$mR!B|c9nv|U@<)SV1z3`AzfZtCr8PtIS2BP6?DgA3~g-r8wc|84CGrOqqcz(2a z*gPrnwMGY81waR@TUot3Rj%hVypSg2ml+;SmT|d+vHuY3uVwXV*54xICYWFk>|_ld z*6?mhhajozL;4Nb4_1JjM6hC^4}cK*oT*8YseXP0{HHNxr8(n|lR z$Nyxp>?h;Hp&h>Vntd^^#bzb^_VMK(et*duK38$WrPm%E{HBl|o)WK=PjT7LzED>7 jfBt1kADwkvYfDLtYdnAE`@)5T1-U1lZhBK%dUX5)ViSEB