From 4f14cfafe83e1abd9066ab98a1ea62168c8e1ad3 Mon Sep 17 00:00:00 2001 From: Tobias Nett Date: Fri, 11 Feb 2022 21:22:08 +0100 Subject: [PATCH] feat: add convenience method PhyiscEngine#recomputeCharacterCollider(entity) We have code like this in some place, seemingly to make sure the character collider is recomputed to reflect changed values on the entity's components. ```java physicsEngine.removeCharacterCollider(entity); physicsEngine.getCharacterCollider(entity); ``` With the ability to simply add this as default method implementation in the interface we can provide a documented implementation for this, introducing a better alternative to cryptically calling `remove...` and `get...`. --- .../engine/physics/engine/PhysicsEngine.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/engine/src/main/java/org/terasology/engine/physics/engine/PhysicsEngine.java b/engine/src/main/java/org/terasology/engine/physics/engine/PhysicsEngine.java index 4936359a4d6..9dea006135d 100644 --- a/engine/src/main/java/org/terasology/engine/physics/engine/PhysicsEngine.java +++ b/engine/src/main/java/org/terasology/engine/physics/engine/PhysicsEngine.java @@ -1,4 +1,4 @@ -// Copyright 2021 The Terasology Foundation +// Copyright 2022 The Terasology Foundation // SPDX-License-Identifier: Apache-2.0 package org.terasology.engine.physics.engine; @@ -238,4 +238,19 @@ public interface PhysicsEngine extends Physics { * ShapeComponent. */ boolean updateTrigger(EntityRef entity); + + + /** + * Recompute the character collider for the given entity. + * + * The entity must have a {@link org.terasology.engine.logic.location.LocationComponent LocationComponent} + * and a {@link org.terasology.engine.logic.characters.CharacterMovementComponent CharacterMovementComponent}. + * + * @param entity the entity to recompute the character collider for. + * @return the updated character collider of the entity + */ + default CharacterCollider recomputeCharacterCollider(EntityRef entity) { + removeCharacterCollider(entity); + return getCharacterCollider(entity); + } }