From b0751db5521788c06aac5b96b9ebe5b11bf4eca7 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Thu, 14 Nov 2019 09:20:16 -0500 Subject: [PATCH] - add native SetLineSideRefs(line, side1idx, side2idx) - add scripted FlipLineSideRefs(line) --- src/maploader/postprocessor.cpp | 22 ++++++++++++++++++++ wadsrc/static/zscript/level_postprocessor.zs | 8 +++++++ 2 files changed, 30 insertions(+) diff --git a/src/maploader/postprocessor.cpp b/src/maploader/postprocessor.cpp index be339cb077..8428c32be1 100644 --- a/src/maploader/postprocessor.cpp +++ b/src/maploader/postprocessor.cpp @@ -459,6 +459,28 @@ DEFINE_ACTION_FUNCTION(DLevelPostProcessor, SetLineVertexes) return 0; } +DEFINE_ACTION_FUNCTION(DLevelPostProcessor, SetLineSideRefs) +{ + PARAM_SELF_PROLOGUE(DLevelPostProcessor); + PARAM_UINT(lineidx); + PARAM_UINT(sideidx1); + PARAM_UINT(sideidx2); + + if (lineidx < self->Level->lines.Size() && + sideidx1 < self->Level->sides.Size() && + sideidx2 < self->Level->sides.Size()) + { + line_t *line = &self->Level->lines[lineidx]; + side_t *side1 = &self->Level->sides[sideidx1]; + side_t *side2 = &self->Level->sides[sideidx2]; + + line->sidedef[0] = side1; + line->sidedef[1] = side2; + } + self->loader->ForceNodeBuild = true; + return 0; +} + DEFINE_ACTION_FUNCTION(DLevelPostProcessor, SetLineSectorRef) { PARAM_SELF_PROLOGUE(DLevelPostProcessor); diff --git a/wadsrc/static/zscript/level_postprocessor.zs b/wadsrc/static/zscript/level_postprocessor.zs index 3e3441d729..0ca307b7ef 100644 --- a/wadsrc/static/zscript/level_postprocessor.zs +++ b/wadsrc/static/zscript/level_postprocessor.zs @@ -48,6 +48,7 @@ class LevelPostProcessor native play protected native void SetVertex(uint vertex, double x, double y); protected native void SetLineVertexes(uint Line, uint v1, uint v2); + protected native void SetLineSideRefs(uint Line, uint s1, uint s2); protected native void SetLineSectorRef(uint line, uint side, uint sector); protected native Actor GetDefaultActor(Name actorclass); @@ -58,6 +59,13 @@ class LevelPostProcessor native play SetLineVertexes(Line, v2, v1); } + protected void FlipLineSideRefs(uint Line) + { + uint s1 = level.lines[Line].sidedef[0].Index(); + uint s2 = level.lines[Line].sidedef[1].Index(); + SetLineSideRefs(Line, s2, s1); + } + protected void SetWallTexture(int line, int side, int texpart, String texture) { SetWallTextureID(line, side, texpart, TexMan.CheckForTexture(texture, TexMan.Type_Wall));