Apply speed group above
This commit is contained in:
parent
829dce4089
commit
a9eba21f82
@ -1138,16 +1138,27 @@ float LocalPlayer::getSlipFactor(Environment *env, const v3f &speedH)
|
|||||||
|
|
||||||
float LocalPlayer::getSpeedFactor(Environment *env)
|
float LocalPlayer::getSpeedFactor(Environment *env)
|
||||||
{
|
{
|
||||||
|
int speed_below = 0, speed_above = 0;
|
||||||
|
v3s16 pos = getStandingNodePos();
|
||||||
const INodeDefManager *nodemgr = env->getGameDef()->ndef();
|
const INodeDefManager *nodemgr = env->getGameDef()->ndef();
|
||||||
Map *map = &env->getMap();
|
Map *map = &env->getMap();
|
||||||
const ContentFeatures &f = nodemgr->get(map->getNodeNoEx(
|
|
||||||
getStandingNodePos()));
|
|
||||||
int speed = 0;
|
|
||||||
if (f.walkable)
|
|
||||||
speed = itemgroup_get(f.groups, "speed");
|
|
||||||
|
|
||||||
|
const ContentFeatures &f = nodemgr->get(map->getNodeNoEx(pos));
|
||||||
|
if (f.walkable)
|
||||||
|
speed_below = itemgroup_get(f.groups, "speed");
|
||||||
|
|
||||||
|
const ContentFeatures &f2 = nodemgr->get(map->getNodeNoEx(
|
||||||
|
pos + v3s16(0, 1, 0)));
|
||||||
|
speed_above = itemgroup_get(f2.groups, "speed");
|
||||||
|
|
||||||
|
if (speed_above == 0) {
|
||||||
|
const ContentFeatures &f3 = nodemgr->get(map->getNodeNoEx(
|
||||||
|
pos + v3s16(0, 2, 0)));
|
||||||
|
speed_above = itemgroup_get(f3.groups, "speed");
|
||||||
|
}
|
||||||
|
int speed = speed_below + speed_above;
|
||||||
if (speed != 0) {
|
if (speed != 0) {
|
||||||
return core::clamp(1.0f + (float)speed/100, 0.01f, 10.0f);
|
return core::clamp(1.0f + f32(speed) / 100.f, 0.01f, 10.0f);
|
||||||
}
|
}
|
||||||
return 1.0f;
|
return 1.0f;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user