From e866a9e0c0a7104e9b89d45c4218790821791879 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 4 Jan 2021 10:37:14 +0100 Subject: [PATCH] - moved setsectinterpolate/clearsectinterpolate into the backend. --- source/core/interpolate.cpp | 43 ++++++++++++++ source/core/interpolate.h | 2 + source/games/duke/CMakeLists.txt | 1 - source/games/duke/src/funct.h | 2 - source/games/duke/src/interpolate.cpp | 85 --------------------------- 5 files changed, 45 insertions(+), 88 deletions(-) delete mode 100644 source/games/duke/src/interpolate.cpp diff --git a/source/core/interpolate.cpp b/source/core/interpolate.cpp index 902ac7247..8ccab4f41 100644 --- a/source/core/interpolate.cpp +++ b/source/core/interpolate.cpp @@ -177,6 +177,49 @@ void ClearMovementInterpolations() } } +void setsectinterpolate(int sectnum) +{ + int j, k, startwall, endwall; + auto sect = §or[sectnum]; + + startwall = sect->wallptr; + endwall = startwall + sect->wallnum; + + for (j = startwall; j < endwall; j++) + { + StartInterpolation(j, Interp_Wall_X); + StartInterpolation(j, Interp_Wall_Y); + k = wall[j].nextwall; + if (k >= 0) + { + StartInterpolation(k, Interp_Wall_X); + StartInterpolation(k, Interp_Wall_Y); + k = wall[k].point2; + StartInterpolation(k, Interp_Wall_X); + StartInterpolation(k, Interp_Wall_Y); + } + } +} + +void clearsectinterpolate(int sectnum) +{ + short j, startwall, endwall; + auto sect = §or[sectnum]; + + startwall = sect->wallptr; + endwall = startwall + sect->wallnum; + for (j = startwall; j < endwall; j++) + { + StopInterpolation(j, Interp_Wall_X); + StopInterpolation(j, Interp_Wall_Y); + if (wall[j].nextwall >= 0) + { + StopInterpolation(wall[j].nextwall, Interp_Wall_X); + StopInterpolation(wall[j].nextwall, Interp_Wall_Y); + } + } +} + FSerializer& Serialize(FSerializer& arc, const char* keyname, Interpolation& w, Interpolation* def) { if (arc.BeginObject(keyname)) diff --git a/source/core/interpolate.h b/source/core/interpolate.h index 401e978d5..39fd034f1 100644 --- a/source/core/interpolate.h +++ b/source/core/interpolate.h @@ -30,3 +30,5 @@ void ClearMovementInterpolations(); void DoInterpolations(double smoothratio); void RestoreInterpolations(); void SerializeInterpolations(FSerializer& arc); +void clearsectinterpolate(int sectnum); +void setsectinterpolate(int sectnum); diff --git a/source/games/duke/CMakeLists.txt b/source/games/duke/CMakeLists.txt index 4e87e23f7..8fb47d88f 100644 --- a/source/games/duke/CMakeLists.txt +++ b/source/games/duke/CMakeLists.txt @@ -25,7 +25,6 @@ set( PCH_SOURCES src/hudweapon_d.cpp src/hudweapon_r.cpp src/input.cpp - src/interpolate.cpp src/noise.cpp src/player.cpp src/player_d.cpp diff --git a/source/games/duke/src/funct.h b/source/games/duke/src/funct.h index 876f20213..a27c8b6b1 100644 --- a/source/games/duke/src/funct.h +++ b/source/games/duke/src/funct.h @@ -160,8 +160,6 @@ void dotorch(); int hitawall(struct player_struct* pl, int* hitWall); int hits(DDukeActor* snum); -void clearsectinterpolate(int sprnum); -void setsectinterpolate(int sectnum); DDukeActor* LocateTheLocator(int n, int sectnum); void clearcamera(player_struct* ps); diff --git a/source/games/duke/src/interpolate.cpp b/source/games/duke/src/interpolate.cpp deleted file mode 100644 index 750fd26a7..000000000 --- a/source/games/duke/src/interpolate.cpp +++ /dev/null @@ -1,85 +0,0 @@ -//------------------------------------------------------------------------- -/* -Copyright (C) 1996, 2003 - 3D Realms Entertainment -Copyright (C) 2000, 2003 - Matt Saettler (EDuke Enhancements) -Copyright (C) 2020 - Christoph Oelckers - -This file is part of Enhanced Duke Nukem 3D version 1.5 - Atomic Edition - -Duke Nukem 3D is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License -as published by the Free Software Foundation; either version 2 -of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -See the GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -aint with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -Original Source: 1996 - Todd Replogle -Prepared for public release: 03/21/2003 - Charlie Wiederhold, 3D Realms - -EDuke enhancements integrated: 04/13/2003 - Matt Saettler - -Note: EDuke source was in transition. Changes are in-progress in the -source as it is released. - -*/ -//------------------------------------------------------------------------- - -#include "ns.h" // Must come before everything else! -#include "global.h" -#include "interpolate.h" - -BEGIN_DUKE_NS - -void setsectinterpolate(int sectnum) -{ - int j, k, startwall,endwall; - auto sect = §or[sectnum]; - - startwall = sect->wallptr; - endwall = startwall+sect->wallnum; - - for(j=startwall;j= 0) - { - StartInterpolation(k, Interp_Wall_X); - StartInterpolation(k, Interp_Wall_Y); - k = wall[k].point2; - StartInterpolation(k, Interp_Wall_X); - StartInterpolation(k, Interp_Wall_Y); - } - } -} - -void clearsectinterpolate(int sectnum) -{ - short j,startwall,endwall; - auto sect = §or[sectnum]; - - startwall = sect->wallptr; - endwall = startwall + sect->wallnum; - for(j=startwall;j= 0) - { - StopInterpolation(wall[j].nextwall, Interp_Wall_X); - StopInterpolation(wall[j].nextwall, Interp_Wall_Y); - } - } -} - -END_DUKE_NS -