Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision

Target

Select target project
  • STJr/SRB2
  • Sryder/SRB2
  • wolfy852/SRB2
  • Alpha2244/SRB2
  • Inuyasha/SRB2
  • yoshibot/SRB2
  • TehRealSalt/SRB2
  • PrisimaTF/SRB2
  • Hatninja/SRB2
  • SteelT/SRB2
  • james/SRB2
  • ShaderWraith/SRB2
  • SinnamonLat/SRB2
  • mazmazz_/SRB2
  • filpAM/SRB2
  • chaoloveicemdboy/SRB2
  • Whooa21/SRB2
  • Machturne/SRB2
  • Golden/SRB2
  • Tatsuru/SRB2
  • Snu/SRB2
  • Zwip-Zwap_Zapony/SRB2
  • fickleheart/SRB2
  • alphaRexJames/SRB2
  • JJK/SRB2
  • diskpoppy/SRB2
  • Hannu_Hanhi/SRB2
  • ZipperQR/SRB2
  • kays/SRB2
  • spherallic/SRB2
  • Zippy_Zolton/SRB2
  • namiishere/SRB2
  • Ors/SRB2
  • SMS_Alfredo/SRB2
  • sonic_edge/SRB2
  • lavla/SRB2
  • ashi/SRB2
  • X.organic/SRB2
  • Fafabis/SRB2
  • Meziu/SRB2
  • v-rob/SRB2
  • tertu/SRB2
  • bitten2up/SRB2
  • flarn2006/SRB2
  • Krabs/SRB2
  • clairebun/SRB2
  • Lactozilla/SRB2
  • thehackstack/SRB2
  • Spice/SRB2
  • win8linux/SRB2
  • JohnFrostFox/SRB2
  • talktoneon726/SRB2
  • Wane/SRB2
  • Lamibe/SRB2
  • spectrumuk2/srb-2
  • nerdyminer18/srb-2
  • 256nil/SRB2
  • ARJr/SRB2
  • Alam/SRB2
  • Zenya/srb-2-marathon-demos
  • Acelite/srb-2-archivedmodifications
  • MIDIMan/SRB2
  • Lach/SRB2
  • Frostiikin/bounce-tweaks
  • Hanicef/SRB2Classic
  • Jaden/SRB2
  • Tyron/SRB2
  • Astronight/SRB2
  • Mari0shi06/SRB2
  • aiire/SRB2
  • Galactice/SRB2
  • srb2-ports/srb2-dreamcast
  • sdasdas/SRB2
  • chreas/srb-2-vr
  • StarManiaKG/the-story-of-sinically-rocketing-and-botching-the-2nd
  • LoganAir/SRB2
  • NepDisk/srb-2
  • alufolie91/SRB2
  • Felicia.iso/SRB2
  • twi/SRB2
  • BarrelsOFun/SRB2
  • Speed2411/SRB2
  • Leather_Realms/SRB2
  • Ayemar/SRB2
  • Acelite/SRB2
  • VladDoc/SRB2
  • kaldrum/model-features
  • strawberryfox417/SRB2
  • Lugent/SRB2
  • Jisk/SRB2
  • Rem/SRB2
  • Refrag/SRB2
  • Henry_3230/srb-3230
  • TehPuertoRicanSpartan2/tprs-srb2
  • Leminn/srb-2-marathon-stuff
  • chromaticpipe2/SRB2
  • MiguelGustavo15/SRB2
  • Maru/srb-2-tests
  • SilicDev/SRB2
  • UnmatchedBracket/SRB2
  • HybridDog/SRB2
  • xordspar0/SRB2
  • jsjhbewfhh/SRB2
  • Fancy2209/SRB2
  • Lorsoen/SRB2
  • shindoukin/SRB2
  • GamerOfDays/SRB2
  • Craftyawesome/SRB2
  • tenshi-tensai-tennoji/SRB2
  • Scarfdudebalder/SRB2
  • luigi-budd/srb-2-fix-interplag-lockon
  • mskluesner/SRB2
  • johnpetersa19/SRB2
  • Pheazant/SRB2
  • chromaticpipe2/srb2classic
  • romoney5/SRB2
  • PAS/SRB2Classic
  • BlueStaggo/SRB2
118 results
Select Git revision
Show changes
Commits on Source (3)
......@@ -3492,6 +3492,53 @@ static void PTR_GlideClimbTraverse(line_t *li)
canclimb = (li->backsector ? P_IsClimbingValid(slidemo->player, climbangle) : true);
if (!slidemo->player->climbing && canclimb)
{
// When latching on from a glide, ensure that the line segment of Knuckles's movement intersects with the line segment of the linedef.
// Position in front of the player. Think of it like the facing normal.
// Uses 20*FRACUNIT as an arbitrary distance
fixed_t posPlusNormalX = slidemo->x + FixedMul(slidemo->radius + 20*FRACUNIT, FINECOSINE(slidemo->angle >> ANGLETOFINESHIFT));
fixed_t posPlusNormalY = slidemo->y + FixedMul(slidemo->radius + 20*FRACUNIT, FINESINE(slidemo->angle >> ANGLETOFINESHIFT));
INT32 pointOnSides[4];
vector3_t pointVec, lineVec[2];
pointVec.z = 0;
lineVec[0].z = 0;
lineVec[1].z = 0;
// Player's position
pointVec.x = slidemo->x;
pointVec.y = slidemo->y;
lineVec[0].x = li->v1->x;
lineVec[0].y = li->v1->y;
lineVec[1].x = li->v2->x;
lineVec[1].y = li->v2->y;
pointOnSides[0] = FV3_PointOnLineSide(&pointVec, lineVec);
// Player's position + radius + 20*FRACUNIT
pointVec.x = posPlusNormalX;
pointVec.y = posPlusNormalY;
pointOnSides[1] = FV3_PointOnLineSide(&pointVec, lineVec);
// Linedef vertex 1
lineVec[0].x = slidemo->x;
lineVec[0].y = slidemo->y;
lineVec[1].x = posPlusNormalX;
lineVec[1].y = posPlusNormalY;
pointVec.x = li->v1->x;
pointVec.y = li->v1->y;
pointOnSides[2] = FV3_PointOnLineSide(&pointVec, lineVec);
// Linedef vertex 2
pointVec.x = li->v2->x;
pointVec.y = li->v2->y;
pointOnSides[3] = FV3_PointOnLineSide(&pointVec, lineVec);
if (pointOnSides[0] == pointOnSides[1] || pointOnSides[2] == pointOnSides[3])
canclimb = false;
}
if (((!slidemo->player->climbing && abs((signed)(slidemo->angle - ANGLE_90 - climbline)) < ANGLE_45)
|| (slidemo->player->climbing == 1 && abs((signed)(slidemo->angle - climbline)) < ANGLE_135))
&& canclimb)
......