diff --git a/core/src/com/riiablo/engine/system/PhysicsSystem.java b/core/src/com/riiablo/engine/system/PhysicsSystem.java new file mode 100644 index 00000000..ad4f71c3 --- /dev/null +++ b/core/src/com/riiablo/engine/system/PhysicsSystem.java @@ -0,0 +1,28 @@ +package com.riiablo.engine.system; + +import com.badlogic.ashley.core.ComponentMapper; +import com.badlogic.ashley.core.Entity; +import com.badlogic.ashley.core.Family; +import com.badlogic.ashley.systems.IteratingSystem; +import com.badlogic.gdx.math.Vector2; +import com.riiablo.engine.component.PositionComponent; +import com.riiablo.engine.component.VelocityComponent; + +public class PhysicsSystem extends IteratingSystem { + private final ComponentMapper positionComponent = ComponentMapper.getFor(PositionComponent.class); + private final ComponentMapper velocityComponent = ComponentMapper.getFor(VelocityComponent.class); + + public PhysicsSystem() { + super(Family.all(PositionComponent.class, VelocityComponent.class).get()); + } + + @Override + protected void processEntity(Entity entity, float delta) { + VelocityComponent velocityComponent = this.velocityComponent.get(entity); + Vector2 velocity = velocityComponent.velocity; + if (velocity.isZero()) return; + PositionComponent positionComponent = this.positionComponent.get(entity); + Vector2 position = positionComponent.position; + position.mulAdd(velocity, delta); + } +}