forked from spring/spring
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStaticMoveType.cpp
More file actions
27 lines (22 loc) · 898 Bytes
/
StaticMoveType.cpp
File metadata and controls
27 lines (22 loc) · 898 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#include "StaticMoveType.h"
#include "Map/Ground.h"
#include "Sim/Units/Unit.h"
#include "Sim/Units/UnitDef.h"
CR_BIND_DERIVED(CStaticMoveType, AMoveType, (nullptr))
CR_REG_METADATA(CStaticMoveType, )
void CStaticMoveType::SlowUpdate()
{
// buildings and pseudo-static units can be transported
if (owner->GetTransporter() != nullptr)
return;
// NOTE:
// static buildings don't have any MoveDef instance, hence we need
// to get the ground height instead of calling CMoveMath::yLevel()
// FIXME: intercept heightmapUpdate events and update buildings y-pos only on-demand!
if (owner->FloatOnWater() && owner->IsInWater()) {
owner->Move(UpVector * (-waterline - owner->pos.y), true);
} else {
owner->Move(UpVector * (CGround::GetHeightReal(owner->pos.x, owner->pos.z) - owner->pos.y), true);
}
}