From 3a569f176dc973e2c9735d0b65de0cacd3cfee2c Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 29 Mar 2017 01:01:40 +0200 Subject: [PATCH] - added GetLineX/GetLineY ACS functions. --- src/p_acs.cpp | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/p_acs.cpp b/src/p_acs.cpp index d380bbac2..f9e0f58e7 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -4964,6 +4964,10 @@ enum EACSFunctions ACSF_ScriptCall, ACSF_StartSlideshow, + // Eternity's + ACSF_GetLineX = 300, + ACSF_GetLineY, + // OpenGL stuff ACSF_SetSectorGlow = 400, @@ -6822,11 +6826,24 @@ doplaysound: if (funcIndex == ACSF_PlayActorSound) G_StartSlideshow(FName(FBehavior::StaticLookupString(args[0]))); break; + case ACSF_GetLineX: + case ACSF_GetLineY: + { + FLineIdIterator it(args[0]); + int lineno = it.Next(); + if (lineno < 0) return 0; + DVector2 delta = level.lines[lineno].Delta(); + double result = delta[funcIndex - ACSF_GetLineX] * ACSToDouble(args[1]); + if (args[2]) + { + DVector2 normal = DVector2(delta.Y, -delta.X).Unit(); + result += normal[funcIndex - ACSF_GetLineX] * ACSToDouble(args[2]); + } + return DoubleToACS(result); + } default: break; } - - return 0; }