Merge branch 'master' into Mario/showspecs
[xonotic/xonotic-data.pk3dir.git] / qcsrc / client / prandom.qc
1 #if defined(CSQC)
2         #include "../dpdefs/csprogsdefs.qh"
3         #include "../warpzonelib/mathlib.qh"
4         #include "prandom.qh"
5 #elif defined(MENUQC)
6 #elif defined(SVQC)
7 #endif
8
9 // prandom - PREDICTABLE random number generator (not seeded yet)
10
11 #ifdef USE_PRANDOM
12 float prandom_seed;
13 float prandom()
14 {
15         float c;
16         c = crc16(false, strcat(ftos(prandom_seed), ftos(prandom_seed + M_PI)));
17         prandom_seed = c;
18
19 #ifdef USE_PRANDOM_DEBUG
20         dprint("RANDOM -> ", ftos(c), "\n");
21 #endif
22
23         return c / 65536; // in [0..1[
24 }
25
26 vector prandomvec()
27 {
28         vector v;
29
30         do
31         {
32                 v.x = prandom();
33                 v.y = prandom();
34                 v.z = prandom();
35         }
36         while(v * v > 1);
37
38         return v;
39 }
40
41 void psrandom(float seed)
42 {
43         prandom_seed = seed;
44 #ifdef USE_PRANDOM_DEBUG
45         dprint("SRANDOM ", ftos(seed), "\n");
46 #endif
47 }
48
49 #ifdef USE_PRANDOM_DEBUG
50 void prandom_debug()
51 {
52         dprint("Current random seed = ", ftos(prandom_seed), "\n");
53 }
54 #endif
55 #endif