]> icculus.org git repositories - divverent/nexuiz.git/blob - data/qcsrc/server/tturrets/system/system_misc.qc
fix a typo in turret code
[divverent/nexuiz.git] / data / qcsrc / server / tturrets / system / system_misc.qc
1 //--// Some support routines //--//\r
2 \r
3 float shortangle_f(float ang1,float ang2)\r
4 {\r
5     if(ang1 > ang2)\r
6     {\r
7         if(ang1 >= 180)\r
8             return ang1 - 360;\r
9     }\r
10     else\r
11     {\r
12         if(ang1 <= -180)\r
13             return ang1 + 360;\r
14     }\r
15 \r
16     return ang1;\r
17 }\r
18 vector shortangle_v(vector ang1,vector ang2)\r
19 {\r
20     vector vtmp;\r
21     vtmp_x = shortangle_f(ang1_x,ang2_x);\r
22     vtmp_y = shortangle_f(ang1_y,ang2_y);\r
23     vtmp_z = shortangle_f(ang1_z,ang2_z);\r
24 \r
25     return vtmp;\r
26 }\r
27 \r
28 \r
29 // Get real origin\r
30 vector real_origin(entity ent)\r
31 {\r
32     entity e;\r
33     vector v;\r
34 \r
35     e = ent.tag_entity;\r
36     while(e)\r
37     {\r
38         // v = v + e.origin;\r
39         v = v + ((e.absmin + e.absmax) * 0.5);\r
40         e = e.tag_entity;\r
41     }\r
42     //v = v + ent.origin;\r
43     v = v + ((ent.absmin + ent.absmax) * 0.5);\r
44     return v;\r
45 \r
46 }\r
47 \r
48 // Plug this into wherever precashing is done.\r
49 void g_turrets_common_precash()\r
50 {\r
51     precache_model ("models/turrets/c512.md3");\r
52 }\r
53 \r
54 /*\r
55 * Paint a v_color colord circle on target onwho\r
56 * that fades away over f_time\r
57 */\r
58 void paint_target(entity onwho, float f_size, vector v_color, float f_time)\r
59 {\r
60     entity e;\r
61 \r
62     e = spawn();\r
63     setmodel(e, "models/turrets/c512.md3"); // precision set above\r
64     e.scale = (f_size/512);\r
65     //setsize(e, '0 0 0', '0 0 0');\r
66     //setattachment(e,onwho,"");\r
67     setorigin(e,onwho.origin + '0 0 1');\r
68     e.alpha = 0.15;\r
69     e.movetype = MOVETYPE_FLY;\r
70 \r
71     e.velocity = (v_color * 32); // + '0 0 1' * 64;\r
72 \r
73     e.colormod = v_color;\r
74     SUB_SetFade(e,time,f_time);\r
75 }\r
76 \r
77 void paint_target2(entity onwho, float f_size, vector v_color, float f_time)\r
78 {\r
79     entity e;\r
80 \r
81     e = spawn();\r
82     setmodel(e, "models/turrets/c512.md3"); // precision set above\r
83     e.scale = (f_size/512);\r
84     setsize(e, '0 0 0', '0 0 0');\r
85 \r
86     setorigin(e,onwho.origin + '0 0 1');\r
87     e.alpha = 0.15;\r
88     e.movetype = MOVETYPE_FLY;\r
89 \r
90     e.velocity = (v_color * 32); // + '0 0 1' * 64;\r
91     e.avelocity_x = -128;\r
92 \r
93     e.colormod = v_color;\r
94     SUB_SetFade(e,time,f_time);\r
95 }\r
96 \r
97 void paint_target3(vector where, float f_size, vector v_color, float f_time)\r
98 {\r
99     entity e;\r
100     e = spawn();\r
101     setmodel(e, "models/turrets/c512.md3"); // precision set above\r
102     e.scale = (f_size/512);\r
103     setsize(e, '0 0 0', '0 0 0');\r
104     setorigin(e,where+ '0 0 1');\r
105     e.movetype = MOVETYPE_NONE;\r
106     e.velocity = '0 0 0';\r
107     e.colormod = v_color;\r
108     SUB_SetFade(e,time,f_time);\r
109 }\r
110 \r
111 /*\r
112 * Return the angle between two enteties\r
113 */\r
114 vector angleofs(entity from, entity to)\r
115 {\r
116     vector v_res;\r
117 \r
118     // makevectors(from.angles);\r
119     v_res = normalize(to.origin - from.origin);\r
120     v_res = vectoangles(v_res);\r
121     v_res = v_res - from.angles;\r
122 \r
123     if (v_res_x < 0) v_res_x += 360;\r
124     if (v_res_x > 180) v_res_x -= 360;\r
125 \r
126     if (v_res_y < 0) v_res_y += 360;\r
127     if (v_res_y > 180) v_res_y -= 360;\r
128 \r
129     return v_res;\r
130 }\r
131 \r
132 vector angleofs2(entity from, vector to)\r
133 {\r
134     vector v_res;\r
135 \r
136     // makevectors(from.angles);\r
137     v_res = normalize(to - from.origin);\r
138     v_res = vectoangles(v_res);\r
139     v_res = v_res - from.angles;\r
140 \r
141     if (v_res_x < 0) v_res_x += 360;\r
142     if (v_res_x > 180) v_res_x -= 360;\r
143 \r
144     if (v_res_y < 0) v_res_y += 360;\r
145     if (v_res_y > 180) v_res_y -= 360;\r
146 \r
147     return v_res;\r
148 }\r
149 \r