]> de.git.xonotic.org Git - xonotic/darkplaces.git/commitdiff
Added QC float .allowtouchwithowner . Setting this to true allow an entity to touch...
authordresk <dresk@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 24 Apr 2007 20:28:42 +0000 (20:28 +0000)
committerdresk <dresk@d7cf8633-e32d-0410-b094-e92efae38249>
Tue, 24 Apr 2007 20:28:42 +0000 (20:28 +0000)
git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@7184 d7cf8633-e32d-0410-b094-e92efae38249

progsvm.h
prvm_edict.c
sv_main.c
sv_phys.c
svvm_cmds.c

index e6dcafef31ee66cfb2a90de1017d38dde767e8e7..c9cb69f27106c4b708bcd4b5e027756000fbce39 100644 (file)
--- a/progsvm.h
+++ b/progsvm.h
@@ -124,6 +124,7 @@ typedef struct prvm_prog_fieldoffsets_s
        int SendEntity; // ssqc
        int Version; // ssqc
        int alpha; // ssqc / csqc
+       int allowtouchwithowner;
        int ammo_cells1; // ssqc - Dissolution of Eternity mission pack
        int ammo_lava_nails; // ssqc - Dissolution of Eternity mission pack
        int ammo_multi_rockets; // ssqc - Dissolution of Eternity mission pack
index 823e6b7b90347ad4d1688fcccdcf7076a1ce5193..ff56997074e7884b622730dad1d619cd904382b0 100644 (file)
@@ -1299,6 +1299,7 @@ void PRVM_FindOffsets(void)
        // server and client qc use a lot of similar fields, so this is combined
        prog->fieldoffsets.SendEntity                     = PRVM_ED_FindFieldOffset("SendEntity");
        prog->fieldoffsets.Version                        = PRVM_ED_FindFieldOffset("Version");
+       prog->fieldoffsets.allowtouchwithowner            = PRVM_ED_FindFieldOffset("allowtouchwithowner");
        prog->fieldoffsets.alpha                          = PRVM_ED_FindFieldOffset("alpha");
        prog->fieldoffsets.ammo_cells1                    = PRVM_ED_FindFieldOffset("ammo_cells1");
        prog->fieldoffsets.ammo_lava_nails                = PRVM_ED_FindFieldOffset("ammo_lava_nails");
index f019c4dfea394aa54c73ae3422097e19f671effd..8f4ba449d140284f4454f988f100fa6250b8b468 100644 (file)
--- a/sv_main.c
+++ b/sv_main.c
@@ -2618,6 +2618,7 @@ prvm_required_field_t reqfields[] =
        {ev_entity, "nodrawtoclient"},
        {ev_entity, "tag_entity"},
        {ev_entity, "viewmodelforclient"},
+       {ev_float, "allowtouchwithowner"},
        {ev_float, "alpha"},
        {ev_float, "ammo_cells1"},
        {ev_float, "ammo_lava_nails"},
index 2948f2c9210e640aed513ed7c21525ac59be9fd8..6c2d933b6660540ac84a916dc09a8abb2ccea8bb 100644 (file)
--- a/sv_phys.c
+++ b/sv_phys.c
@@ -146,6 +146,9 @@ trace_t SV_Move(const vec3_t start, const vec3_t mins, const vec3_t maxs, const
        int numtouchedicts;
        prvm_edict_t *touchedicts[MAX_EDICTS];
 
+       // Get Allow Touch with Owner
+       int nAllowTouchWithOwner = PRVM_EDICTFIELDVALUE(passedict, prog->fieldoffsets.allowtouchwithowner)->_int;
+
        VectorCopy(start, clipstart);
        VectorCopy(end, clipend);
        VectorCopy(mins, clipmins);
@@ -232,10 +235,10 @@ trace_t SV_Move(const vec3_t start, const vec3_t mins, const vec3_t maxs, const
                        if (passedict == touch)
                                continue;
                        // don't clip owned entities against owner
-                       if (traceowner == touch)
+                       if (!nAllowTouchWithOwner && traceowner == touch)
                                continue;
                        // don't clip owner against owned entities
-                       if (passedictprog == touch->fields.server->owner)
+                       if (!nAllowTouchWithOwner && passedictprog == touch->fields.server->owner)
                                continue;
                        // don't clip points against points (they can't collide)
                        if (pointtrace && VectorCompare(touch->fields.server->mins, touch->fields.server->maxs) && (type != MOVE_MISSILE || !((int)touch->fields.server->flags & FL_MONSTER)))
index 6a32a38ab4ff92fce4abb3c543b1c767f65d910f..390abfec9654dadfb30b542d49cbebdf7e24ea00 100644 (file)
@@ -88,6 +88,7 @@ char *vm_sv_extensions =
 "DP_SND_STEREOWAV "
 "DP_SOLIDCORPSE "
 "DP_SPRITE32 "
+"DP_SV_ALLOWTOUCHWITHOWNER "
 "DP_SV_BOTCLIENT "
 "DP_SV_CLIENTCOLORS "
 "DP_SV_CLIENTNAME "