From 90f631960debe902a368c72c6202093b64a8fb4a Mon Sep 17 00:00:00 2001 From: div0 Date: Fri, 29 Aug 2008 06:13:22 +0000 Subject: [PATCH] make doors/plats not change their position in the spawn function (but defer that). Helps with attaching misc_follow. git-svn-id: svn://svn.icculus.org/nexuiz/trunk@4227 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- data/qcsrc/server/g_triggers.qc | 1 + data/qcsrc/server/miscfunctions.qc | 1 + data/qcsrc/server/t_plats.qc | 25 +++++++++++++++---------- 3 files changed, 17 insertions(+), 10 deletions(-) diff --git a/data/qcsrc/server/g_triggers.qc b/data/qcsrc/server/g_triggers.qc index eb92b1f96..c3dc87caa 100644 --- a/data/qcsrc/server/g_triggers.qc +++ b/data/qcsrc/server/g_triggers.qc @@ -257,6 +257,7 @@ void spawnfunc_trigger_multiple() if ( !(self.spawnflags & SPAWNFLAG_NOTOUCH) ) { self.touch = multi_touch; + setorigin (self, self.origin); // make sure it links into the world } } }; diff --git a/data/qcsrc/server/miscfunctions.qc b/data/qcsrc/server/miscfunctions.qc index da611894c..b1cb4b41d 100644 --- a/data/qcsrc/server/miscfunctions.qc +++ b/data/qcsrc/server/miscfunctions.qc @@ -1196,6 +1196,7 @@ float ExactTriggerHit() #define INITPRIO_GAMETYPE_FALLBACK 1 #define INITPRIO_FINDTARGET 10 #define INITPRIO_SETLOCATION 90 +#define INITPRIO_LINKDOORS 91 #define INITPRIO_LAST 99 .void(void) initialize_entity; diff --git a/data/qcsrc/server/t_plats.qc b/data/qcsrc/server/t_plats.qc index 16a63f21b..f5217b973 100644 --- a/data/qcsrc/server/t_plats.qc +++ b/data/qcsrc/server/t_plats.qc @@ -140,6 +140,11 @@ void plat_use() plat_go_down(); }; +void plat_init_movedown() +{ + setorigin (self, self.pos2); + self.state = 2; +} .string sound1, sound2; @@ -214,10 +219,7 @@ void spawnfunc_func_plat() self.use = plat_use; } else - { - setorigin (self, self.pos2); - self.state = 2; - } + InitializeEntity(self, plat_init_movedown, INITPRIO_SETLOCATION); }; @@ -961,6 +963,13 @@ FIXME: only one sound set available at the time being */ +void door_init_startopen() +{ + setorigin (self, self.pos2); + self.pos2 = self.pos1; + self.pos1 = self.origin; +} + void spawnfunc_func_door() { //if (!self.deathtype) // map makers can override this @@ -1006,11 +1015,7 @@ void spawnfunc_func_door() // DOOR_START_OPEN is to allow an entity to be lighted in the closed position // but spawn in the open position if (self.spawnflags & DOOR_START_OPEN) - { - setorigin (self, self.pos2); - self.pos2 = self.pos1; - self.pos1 = self.origin; - } + InitializeEntity(self, door_init_startopen, INITPRIO_SETLOCATION); self.state = STATE_BOTTOM; @@ -1027,7 +1032,7 @@ void spawnfunc_func_door() // LinkDoors can't be done until all of the doors have been spawned, so // the sizes can be detected properly. - InitializeEntity(self, LinkDoors, INITPRIO_FINDTARGET); + InitializeEntity(self, LinkDoors, INITPRIO_LINKDOORS); }; /* -- 2.39.2