| 178 | } |
| 179 | |
| 180 | CharacterController::CollisionFlags CharacterController::Move(const Vector3& displacement) |
| 181 | { |
| 182 | PROFILE_CPU(); |
| 183 | CollisionFlags result = CollisionFlags::None; |
| 184 | if (_controller && !_isUpdatingTransform) |
| 185 | { |
| 186 | // Perform move |
| 187 | const float deltaTime = Time::GetCurrentSafe()->DeltaTime.GetTotalSeconds(); |
| 188 | result = (CollisionFlags)PhysicsBackend::MoveController(_controller, _shape, displacement, _minMoveDistance, deltaTime); |
| 189 | _lastFlags = result; |
| 190 | |
| 191 | // Update position |
| 192 | Vector3 position; |
| 193 | if (_originMode == OriginModes::Base) |
| 194 | position = PhysicsBackend::GetControllerBasePosition(_controller); |
| 195 | else |
| 196 | position = PhysicsBackend::GetControllerPosition(_controller); |
| 197 | position -= _center; |
| 198 | _isUpdatingTransform = true; |
| 199 | SetPosition(position); |
| 200 | _isUpdatingTransform = false; |
| 201 | } |
| 202 | return result; |
| 203 | } |
| 204 | |
| 205 | void CharacterController::Resize(float height, float radius) |
| 206 | { |
nothing calls this directly
no test coverage detected