From 4ed6792996762a125f3ae2f0f996c52fd0ca73fb Mon Sep 17 00:00:00 2001 From: Collin Smith Date: Sun, 10 Nov 2019 01:56:23 -0800 Subject: [PATCH] Added physics system placeholder which manages velocity application on position --- .../riiablo/engine/system/PhysicsSystem.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 core/src/com/riiablo/engine/system/PhysicsSystem.java 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); + } +}