/** * Sets the state of the given entity to the state represented by the CharacterStateEvent. The * state of the entity is determined by its LocationComponent (location and orientation of physics * body), CharacterMovementComponent (velocity and various movement state variables) and * CharacterComponent for pitch and yaw (used for the camera). * * @param entity * @param state */ public void setToState(EntityRef entity, CharacterStateEvent state) { LocationComponent location = entity.getComponent(LocationComponent.class); CharacterMovementComponent movementComp = entity.getComponent(CharacterMovementComponent.class); CharacterComponent characterComponent = entity.getComponent(CharacterComponent.class); if (location == null || movementComp == null || characterComponent == null) { return; } location.setWorldPosition(state.getPosition()); location.setWorldRotation(state.getRotation()); entity.saveComponent(location); movementComp.mode = state.getMode(); movementComp.setVelocity(state.getVelocity()); movementComp.grounded = state.isGrounded(); movementComp.footstepDelta = state.getFootstepDelta(); entity.saveComponent(movementComp); characterComponent.pitch = state.getPitch(); characterComponent.yaw = state.getYaw(); entity.saveComponent(characterComponent); setPhysicsLocation(entity, state.getPosition()); }
private void extrapolateCharacterComponent(EntityRef entity, CharacterStateEvent state) { CharacterComponent characterComponent = entity.getComponent(CharacterComponent.class); characterComponent.pitch = state.getPitch(); characterComponent.yaw = state.getYaw(); entity.saveComponent(characterComponent); }