From 021126045fdbb00f8fb1330be33fb6dd1028da8f Mon Sep 17 00:00:00 2001 From: helixhorned Date: Mon, 30 Jan 2012 18:25:13 +0000 Subject: [PATCH] Mapster32: tweak dragging a single sprite so that they can be dragged 'uphill'. The implementation uses the recently introduced updatesector_onlynextwall when setspritez fails. git-svn-id: https://svn.eduke32.com/eduke32@2302 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/eduke32/build/src/build.c | 32 +++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/polymer/eduke32/build/src/build.c b/polymer/eduke32/build/src/build.c index 883e9269c..43b3a6ce3 100644 --- a/polymer/eduke32/build/src/build.c +++ b/polymer/eduke32/build/src/build.c @@ -5073,7 +5073,8 @@ end_after_dragging: } else if ((pointhighlight&0xc000) == 16384) { - int32_t daspr=pointhighlight&16383, osec=sprite[daspr].sectnum; + int32_t daspr=pointhighlight&16383; + int16_t osec=sprite[daspr].sectnum, nsec=osec; vec3_t vec, ovec; Bmemcpy(&ovec, (vec3_t *)&sprite[daspr], sizeof(vec3_t)); @@ -5081,24 +5082,23 @@ end_after_dragging: vec.y = day; vec.z = sprite[daspr].z; if (setspritez(daspr, &vec) == -1 && osec>=0) - Bmemcpy(&sprite[daspr], &ovec, sizeof(vec3_t)); -#if 0 - daz = spriteheight(daspr, NULL); + { + updatesector_onlynextwalls(dax, day, &nsec); - for (i=0; i= getceilzofslope(i,dax,day)) - if (sprite[daspr].z-daz <= getflorzofslope(i,dax,day)) - { - sprite[daspr].x = dax; - sprite[daspr].y = day; - if (sprite[daspr].sectnum != i) - changespritesect(daspr,(int16_t)i); - break; - } -#endif + if (nsec >= 0) + { + sprite[daspr].x = dax; + sprite[daspr].y = day; + // z updating is after we released the mouse button + if (sprite[daspr].sectnum != nsec) + changespritesect(daspr, nsec); + } + else + Bmemcpy(&sprite[daspr], &ovec, sizeof(vec3_t)); + } } } + asksave = 1; } }