]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/lib/prandom.qc
4f588226912d92dbeba82543617734b952aa056a
[xonotic/xonotic-data.pk3dir.git] / qcsrc / lib / prandom.qc
1 #include "prandom.qh"
2
3 // prandom - PREDICTABLE random number generator (not seeded yet)
4
5 #ifdef USE_PRANDOM
6 float prandom_seed;
7 float prandom()
8 {
9         float c;
10         c = crc16(false, strcat(ftos(prandom_seed), ftos(prandom_seed + M_PI)));
11         prandom_seed = c;
12
13 #ifdef USE_PRANDOM_DEBUG
14         LOG_TRACE("RANDOM -> ", ftos(c), "\n");
15 #endif
16
17         return c / 65536; // in [0..1[
18 }
19
20 vector prandomvec()
21 {
22         vector v;
23
24         do
25         {
26                 v.x = prandom();
27                 v.y = prandom();
28                 v.z = prandom();
29         }
30         while(v * v > 1);
31
32         return v;
33 }
34
35 void psrandom(float seed)
36 {
37         prandom_seed = seed;
38 #ifdef USE_PRANDOM_DEBUG
39         LOG_TRACE("SRANDOM ", ftos(seed), "\n");
40 #endif
41 }
42
43 #ifdef USE_PRANDOM_DEBUG
44 void prandom_debug()
45 {
46         LOG_TRACE("Current random seed = ", ftos(prandom_seed), "\n");
47 }
48 #endif
49 #endif