]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/triggers/func/rainsnow.qc
Merge branch 'master' into Lyberta/StandaloneOverkillWeapons
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / triggers / func / rainsnow.qc
index c8b4e2924376fb510b27ba4ffb2c6d4dc1cba511..ff49eca2c0176c899cdaf1ccd02d9669e0fd851b 100644 (file)
@@ -4,14 +4,12 @@ REGISTER_NET_LINKED(ENT_CLIENT_RAINSNOW)
 #ifdef SVQC
 bool rainsnow_SendEntity(entity this, entity to, float sf)
 {
+       vector myorg = this.origin + this.mins;
+       vector mysize = this.maxs - this.mins;
        WriteHeader(MSG_ENTITY, ENT_CLIENT_RAINSNOW);
        WriteByte(MSG_ENTITY, this.state);
-       WriteCoord(MSG_ENTITY, this.origin_x + this.mins_x);
-       WriteCoord(MSG_ENTITY, this.origin_y + this.mins_y);
-       WriteCoord(MSG_ENTITY, this.origin_z + this.mins_z);
-       WriteCoord(MSG_ENTITY, this.maxs_x - this.mins_x);
-       WriteCoord(MSG_ENTITY, this.maxs_y - this.mins_y);
-       WriteCoord(MSG_ENTITY, this.maxs_z - this.mins_z);
+       WriteVector(MSG_ENTITY, myorg);
+       WriteVector(MSG_ENTITY, mysize);
        WriteShort(MSG_ENTITY, compressShortVector(this.dest));
        WriteShort(MSG_ENTITY, this.count);
        WriteByte(MSG_ENTITY, this.cnt);
@@ -40,17 +38,19 @@ spawnfunc(func_rain)
        this.solid = SOLID_NOT;
        SetBrushEntityModel(this);
        if (!this.cnt)
+       {
                this.cnt = 12;
+       }
        if (!this.count)
                this.count = 2000;
-       this.count = 0.01 * this.count * (this.size_x / 1024) * (this.size_y / 1024);
+       // relative to absolute particle count
+       this.count = this.count * (this.size_x / 1024) * (this.size_y / 1024);
        if (this.count < 1)
                this.count = 1;
        if(this.count > 65535)
                this.count = 65535;
 
-       this.state = 1; // 1 is rain, 0 is snow
-       this.Version = 1;
+       this.state = RAINSNOW_RAIN;
 
        Net_LinkEntity(this, false, 0, rainsnow_SendEntity);
 }
@@ -78,17 +78,19 @@ spawnfunc(func_snow)
        this.solid = SOLID_NOT;
        SetBrushEntityModel(this);
        if (!this.cnt)
+       {
                this.cnt = 12;
+       }
        if (!this.count)
                this.count = 2000;
-       this.count = 0.01 * this.count * (this.size_x / 1024) * (this.size_y / 1024);
+       // relative to absolute particle count
+       this.count = this.count * (this.size_x / 1024) * (this.size_y / 1024);
        if (this.count < 1)
                this.count = 1;
        if(this.count > 65535)
                this.count = 65535;
 
-       this.state = 0; // 1 is rain, 0 is snow
-       this.Version = 1;
+       this.state = RAINSNOW_SNOW;
 
        Net_LinkEntity(this, false, 0, rainsnow_SendEntity);
 }
@@ -115,15 +117,11 @@ void Draw_Snow(entity this)
 
 NET_HANDLE(ENT_CLIENT_RAINSNOW, bool isnew)
 {
-       this.impulse = ReadByte(); // Rain, Snow, or Whatever
-       this.origin_x = ReadCoord();
-       this.origin_y = ReadCoord();
-       this.origin_z = ReadCoord();
-       this.maxs_x = ReadCoord();
-       this.maxs_y = ReadCoord();
-       this.maxs_z = ReadCoord();
+       this.state = ReadByte(); // Rain, Snow, or Whatever
+       this.origin = ReadVector();
+       this.maxs = ReadVector();
        this.velocity = decompressShortVector(ReadShort());
-       this.count = ReadShort() * 10;
+       this.count = ReadShort();
        this.glow_color = ReadByte(); // color
 
        return = true;
@@ -136,7 +134,7 @@ NET_HANDLE(ENT_CLIENT_RAINSNOW, bool isnew)
        setsize(this, this.mins, this.maxs);
        this.solid = SOLID_NOT;
        if (isnew) IL_PUSH(g_drawables, this);
-       if(this.impulse)
+       if(this.state == RAINSNOW_RAIN)
                this.draw = Draw_Rain;
        else
                this.draw = Draw_Snow;