]> de.git.xonotic.org Git - voretournament/voretournament.git/blob - data/qcsrc/client/modeleffects.qc
Include gmqcc binaries for Windows and Linux
[voretournament/voretournament.git] / data / qcsrc / client / modeleffects.qc
1 .float frame1time;\r
2 .float lifetime, fadetime;\r
3 .float teleport_time;\r
4 .float scale1, scale2;\r
5 \r
6 void ModelEffect_Draw()\r
7 {\r
8         self.angles = self.angles + frametime * self.avelocity;\r
9         self.origin = self.origin + frametime * self.velocity;\r
10         self.scale = self.scale1 + (self.scale2 - self.scale1) * (time - self.teleport_time) / (self.lifetime + self.fadetime - self.teleport_time);\r
11         self.alpha = self.cnt * bound(0, 1 - (time - self.lifetime) / self.fadetime, 1);\r
12         if(self.alpha < ALPHA_MIN_VISIBLE)\r
13         {\r
14                 remove(self);\r
15                 return;\r
16         }\r
17         if(self.scale <= 0)\r
18                 return;\r
19         R_AddEntity(self);\r
20 }\r
21 \r
22 void Ent_ModelEffect(float isNew)\r
23 {\r
24         float f;\r
25         entity e;\r
26 \r
27         self.classname = "modeleffect_spawner";\r
28 \r
29         f = ReadByte();\r
30 \r
31         e = spawn();\r
32         e.classname = "modeleffect";\r
33         e.model = "from network";\r
34         e.modelindex = ReadShort();\r
35         e.skin = ReadByte();\r
36         e.frame = ReadByte();\r
37         e.frame1time = time;\r
38         e.origin_x = ReadCoord();\r
39         e.origin_y = ReadCoord();\r
40         e.origin_z = ReadCoord();\r
41         if(f & 1)\r
42         {\r
43                 e.velocity_x = ReadCoord();\r
44                 e.velocity_y = ReadCoord();\r
45                 e.velocity_z = ReadCoord();\r
46         }\r
47         if(f & 2)\r
48         {\r
49                 e.angles_x = ReadAngle();\r
50                 e.angles_y = ReadAngle();\r
51                 e.angles_z = ReadAngle();\r
52         }\r
53         if(f & 4)\r
54         {\r
55                 e.avelocity_x = ReadAngle();\r
56                 e.avelocity_y = ReadAngle();\r
57                 e.avelocity_z = ReadAngle();\r
58         }\r
59         e.scale1 = ReadShort() / 256.0;\r
60         e.scale2 = ReadShort() / 256.0;\r
61         e.lifetime = time + ReadByte() * 0.01;\r
62         e.fadetime = ReadByte() * 0.01;\r
63         e.teleport_time = time;\r
64         e.cnt = ReadByte() / 255.0; // actually alpha\r
65 \r
66         e.draw = ModelEffect_Draw;\r
67 \r
68         if(!isNew)\r
69                 remove(e); // yes, this IS stupid, but I don't need to duplicate all the read* stuff then\r
70 }\r