7 void orb_draw(entity this)
9 float dt = time - this.move_time;
10 this.move_time = time;
14 this.alpha = (this.ltime - time) / this.orb_lifetime;
15 this.scale = min((1 - this.alpha)*this.orb_lifetime*4,1)*this.orb_radius;
16 this.angles = this.angles + dt * this.avelocity;
19 void orb_setup(entity e)
21 setmodel(e, MDL_NADE_ORB);
24 setorigin(e, e.origin);
26 float model_radius = e.maxs.x;
27 vector size = '1 1 1' * e.orb_radius / 2;
28 setsize(e,-size,size);
29 e.orb_radius = e.orb_radius/model_radius*0.6;
32 IL_PUSH(g_drawables, e);
34 set_movetype(e, MOVETYPE_NONE);
36 e.drawmask = MASK_NORMAL;
38 e.avelocity = '7 0 11';
39 e.renderflags |= RF_ADDITIVE;
43 REGISTER_NET_LINKED(Nade_Orb)
46 NET_HANDLE(Nade_Orb, bool isNew)
51 this.origin_x = ReadCoord();
52 this.origin_y = ReadCoord();
53 this.origin_z = ReadCoord();
54 setorigin(this, this.origin);
55 this.colormod_x = ReadCoord();
56 this.colormod_y = ReadCoord();
57 this.colormod_z = ReadCoord();
58 this.orb_lifetime = ReadByte();
59 this.orb_radius = ReadShort();
60 this.ltime = time + ReadByte()/10.0;
61 // this.ltime = time + this.orb_lifetime;
69 bool orb_send(entity this, entity to, int sf)
71 int channel = MSG_ENTITY;
72 WriteHeader(channel, Nade_Orb);
73 WriteByte(channel, sf);
75 WriteCoord(channel, this.origin.x);
76 WriteCoord(channel, this.origin.y);
77 WriteCoord(channel, this.origin.z);
79 WriteCoord(channel, this.colormod.x);
80 WriteCoord(channel, this.colormod.y);
81 WriteCoord(channel, this.colormod.z);
83 WriteByte(channel, this.orb_lifetime);
84 //WriteByte(MSG_ENTITY, this.ltime - time + 1);
85 WriteShort(channel, this.orb_radius);
86 // round time delta to a 1/10th of a second
87 WriteByte(channel, (this.ltime - time)*10.0+0.5);