| 164 | } |
| 165 | |
| 166 | static void Physics_TickRandomBlocks(void) { |
| 167 | int lo, hi, index; |
| 168 | BlockID block; |
| 169 | PhysicsHandler tick; |
| 170 | int x, y, z, x2, y2, z2; |
| 171 | |
| 172 | for (y = 0; y < World.Height; y += CHUNK_SIZE) { |
| 173 | y2 = min(y + CHUNK_MAX, World.MaxY); |
| 174 | for (z = 0; z < World.Length; z += CHUNK_SIZE) { |
| 175 | z2 = min(z + CHUNK_MAX, World.MaxZ); |
| 176 | for (x = 0; x < World.Width; x += CHUNK_SIZE) { |
| 177 | x2 = min(x + CHUNK_MAX, World.MaxX); |
| 178 | |
| 179 | /* Inlined 3 random ticks for this chunk */ |
| 180 | lo = World_Pack( x, y, z); |
| 181 | hi = World_Pack(x2, y2, z2); |
| 182 | |
| 183 | index = Random_Range(&physics_rnd, lo, hi); |
| 184 | block = World.Blocks[index]; |
| 185 | tick = Physics.OnRandomTick[block]; |
| 186 | if (tick) tick(index, block); |
| 187 | |
| 188 | index = Random_Range(&physics_rnd, lo, hi); |
| 189 | block = World.Blocks[index]; |
| 190 | tick = Physics.OnRandomTick[block]; |
| 191 | if (tick) tick(index, block); |
| 192 | |
| 193 | index = Random_Range(&physics_rnd, lo, hi); |
| 194 | block = World.Blocks[index]; |
| 195 | tick = Physics.OnRandomTick[block]; |
| 196 | if (tick) tick(index, block); |
| 197 | } |
| 198 | } |
| 199 | } |
| 200 | } |
| 201 | |
| 202 | |
| 203 | static void Physics_DoFalling(int index, BlockID block) { |
no test coverage detected