mirror of
https://github.com/minetest/minetest.git
synced 2024-11-23 16:13:46 +01:00
Optimize random turns in dungeongen (#8129)
It turns out there is no need to return the new value and preserve the old one in random_turn, the procedure can be made to modify the value in-place. This saves quite a bunch of parameter and return value copying.
This commit is contained in:
parent
25f231a0e0
commit
0c90ab4f6c
@ -494,7 +494,7 @@ void DungeonGen::makeCorridor(v3s16 doorplace, v3s16 doordir,
|
||||
if (partcount >= partlength) {
|
||||
partcount = 0;
|
||||
|
||||
dir = random_turn(random, dir);
|
||||
random_turn(random, dir);
|
||||
|
||||
partlength = random.range(1, length);
|
||||
|
||||
@ -655,20 +655,19 @@ v3s16 turn_xz(v3s16 olddir, int t)
|
||||
}
|
||||
|
||||
|
||||
v3s16 random_turn(PseudoRandom &random, v3s16 olddir)
|
||||
void random_turn(PseudoRandom &random, v3s16 &dir)
|
||||
{
|
||||
int turn = random.range(0, 2);
|
||||
v3s16 dir;
|
||||
if (turn == 0)
|
||||
// Go straight
|
||||
dir = olddir;
|
||||
else if (turn == 1)
|
||||
if (turn == 0) {
|
||||
// Go straight: nothing to do
|
||||
return;
|
||||
} else if (turn == 1) {
|
||||
// Turn right
|
||||
dir = turn_xz(olddir, 0);
|
||||
else
|
||||
dir = turn_xz(dir, 0);
|
||||
} else {
|
||||
// Turn left
|
||||
dir = turn_xz(olddir, 1);
|
||||
return dir;
|
||||
dir = turn_xz(dir, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -34,7 +34,7 @@ class NodeDefManager;
|
||||
|
||||
v3s16 rand_ortho_dir(PseudoRandom &random, bool diagonal_dirs);
|
||||
v3s16 turn_xz(v3s16 olddir, int t);
|
||||
v3s16 random_turn(PseudoRandom &random, v3s16 olddir);
|
||||
void random_turn(PseudoRandom &random, v3s16 &dir);
|
||||
int dir_to_facedir(v3s16 d);
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user