X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fweapons%2Fall.qc;h=a694112ce6672ab57a176fc720b8df8c7ace4a5e;hb=refs%2Fmerge-requests%2F411%2Fhead;hp=763dd6e8de83646cefda1786d8f6b51d3ce1dbaf;hpb=8c965aa90470cfa8cbfaff88db71b6b5899a90ce;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/weapons/all.qc b/qcsrc/common/weapons/all.qc index 763dd6e8d..a694112ce 100644 --- a/qcsrc/common/weapons/all.qc +++ b/qcsrc/common/weapons/all.qc @@ -391,7 +391,9 @@ void CL_WeaponEntity_SetModel(entity this, string name, bool _anim) { if (name == "") { - this.model = ""; + vector oldmin = this.mins, oldmax = this.maxs; + setmodel(this, MDL_Null); + setsize(this, oldmin, oldmax); if (this.weaponchild) delete(this.weaponchild); this.weaponchild = NULL; this.movedir = '0 0 0'; @@ -523,7 +525,11 @@ void CL_WeaponEntity_SetModel(entity this, string name, bool _anim) if (this.movedir.x >= 0) { - int algn = STAT(GUNALIGN, this.owner); + //int algn = STAT(GUNALIGN, this.owner); + int algn = W_GunAlign(this, STAT(GUNALIGN, this.owner)); + #ifdef SVQC + this.m_gunalign = algn; + #endif vector v = this.movedir; this.movedir = shotorg_adjust(v, false, false, algn); this.view_ofs = shotorg_adjust(v, false, true, algn) - v; @@ -557,21 +563,25 @@ NET_HANDLE(wframe, bool isNew) a.x = ReadCoord(); a.y = ReadCoord(); a.z = ReadCoord(); + int slot = ReadByte(); bool restartanim = ReadByte(); - anim_set(viewmodel, a, !restartanim, restartanim, restartanim); - viewmodel.state = ReadByte(); - viewmodel.weapon_nextthink = ReadFloat(); - viewmodel.alpha = ReadByte() / 255; - switch (viewmodel.state) + entity wepent = viewmodels[slot]; + if(a.x == wepent.anim_idle_x) // we don't need to enforce idle animation + wepent.animstate_looping = false; + else + anim_set(wepent, a, !restartanim, restartanim, restartanim); + wepent.state = ReadByte(); + wepent.weapon_nextthink = ReadFloat(); + switch (wepent.state) { case WS_RAISE: - viewmodel.weapon_switchdelay = activeweapon.switchdelay_raise; + wepent.weapon_switchdelay = wepent.activeweapon.switchdelay_raise; break; case WS_DROP: - viewmodel.weapon_switchdelay = activeweapon.switchdelay_drop; + wepent.weapon_switchdelay = wepent.activeweapon.switchdelay_drop; break; default: - viewmodel.weapon_switchdelay = 0; + wepent.weapon_switchdelay = 0; break; } return true; @@ -588,10 +598,10 @@ void wframe_send(entity actor, entity weaponentity, vector a, bool restartanim) WriteCoord(channel, a.x); WriteCoord(channel, a.y); WriteCoord(channel, a.z); + WriteByte(channel, weaponslot(weaponentity.weaponentity_fld)); WriteByte(channel, restartanim); WriteByte(channel, weaponentity.state); WriteFloat(channel, weaponentity.weapon_nextthink); - WriteByte(channel, weaponentity.m_alpha * 255); } #endif