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