sparks for player and remote blinking
[carveJwlIkooP6JGAAIwe30JlM.git] / player_effects.c
diff --git a/player_effects.c b/player_effects.c
new file mode 100644 (file)
index 0000000..0092f19
--- /dev/null
@@ -0,0 +1,33 @@
+#include "player_effects.h"
+#include "particle.h"
+
+static void effect_blink_apply( effect_blink *ef, player_pose *pose, f32 dt ){
+   if( ef->t < 0.0f ){
+      ef->t = (1.0f-powf(vg_randf64(),4.0f))*4.0f;
+      ef->l = 0.08f;
+   }
+
+   pose->keyframes[ localplayer.id_eyes-1 ].s[1] = ef->l > 0.0f? 0.2f: 1.0f;
+
+   ef->t -= dt;
+   ef->l -= dt;
+}
+
+static void effect_spark_apply( effect_spark *ef, v3f co, v3f v, f32 dt ){
+   if( !ef->colour ) return;
+
+   if( ef->t < 0.0f ){
+      ef->t = 0.05f+vg_randf64()*0.1f;
+
+      v3f dir;
+      v3_copy( v, dir );
+      dir[1] += 1.0f;
+      f32 l = v3_length(dir);
+      v3_muls( dir, 1.0f/l, dir );
+
+      particle_spawn_cone( &particles_grind, co, dir, VG_PIf/2.0f, l, 
+                           4.0f, ef->colour );
+   }
+   else
+      ef->t -= dt;
+}