From d9df5d694017ebea82214e2d9ab8af54c1b94e90 Mon Sep 17 00:00:00 2001 From: Not Date: Wed, 11 Oct 2023 18:24:31 +0200 Subject: [PATCH] add ghost proximity transparency + cv --- ghost.lua | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/ghost.lua b/ghost.lua index 8e49f4b..d41fc3f 100644 --- a/ghost.lua +++ b/ghost.lua @@ -35,6 +35,8 @@ local mapChecksum = lb_map_checksum local Transmitter = lb_transmitter local Reciever = lb_reciever +local Player + local Client local Server @@ -174,6 +176,24 @@ local function GhostTable(header) return t end +local transProximity = 150 +local function calcTrans(mobj) + local dist = R_PointToDist2(mobj.x, mobj.y, Player.mo.x, Player.mo.y) + local i = dist / transProximity + local tr = 9 - min(9, FixedInt(i * 9)) + return tr << FF_TRANSSHIFT +end + +CV_RegisterVar({ + name = "lb_ghost_trans_prox", + defaultvalue = 150, + flags = CV_CALL, + PossibleValue = CV_NATURAL, + func = function(cv) + transProximity = cv.value + end +}) + local function ghost_think(mobj) if mobj.done then return end if leveltime < 1 then return end @@ -186,7 +206,6 @@ local function ghost_think(mobj) local ghost = Ghosts:getData(mobj.playerName) local frame = ghost:frame(leveltime) if frame == nil then - --ghost.flags = $ | MF_NOTHINK mobj.done = true mobj.state = S_KART_STND1 mobj.momx, mobj.momy = ghost:thrust(leveltime-1) @@ -196,14 +215,10 @@ local function ghost_think(mobj) P_MoveOrigin(mobj, frame.x, frame.y, frame.z) mobj.angle = frame.angle mobj.state = frame.state - mobj.frame = mobj.frame & (~FF_TRANSMASK) - mobj.frame = mobj.frame | FF_TRANS30 - - --if leveltime < TICRATE * 10 then - -- mobj.flags2 = $ | MF2_DONTDRAW - --else - -- mobj.flags2 = $ & (~MF2_DONTDRAW) - --end + mobj.frame + = mobj.frame + & (~FF_TRANSMASK) + | calcTrans(mobj) return true end @@ -320,7 +335,8 @@ end addHook("ThinkFrame", function() if not Recording then return end - local p = singlePlayer() + Player = singlePlayer() + local p = Player if not p then Server:stop() Client:stop()