package com.deftwun.zombiecopter.components; import com.badlogic.ashley.core.Component; import com.badlogic.gdx.math.MathUtils; import com.badlogic.gdx.math.Vector2; import com.badlogic.gdx.utils.Pool.Poolable; public class LookComponent extends Component implements Poolable{ public float sweepRate = 10; public float sweepAngle = 30; public float sweepAcc = 0; public boolean controlSpriteFlip = false, isSweeping = false, reverseSweep = false; public Vector2 position = new Vector2(0,0), direction = new Vector2(1,0); public void sweep(float startAngle, float endAngle, float rate){ isSweeping = true; if (endAngle < startAngle) reverseSweep = true; sweepAngle = Math.abs(endAngle - startAngle); sweepRate = rate; sweepAcc = 0; } public void lookAtPoint(Vector2 focalPoint){ direction.set(focalPoint).sub(position).nor(); } public void lookAtPoint(float x, float y){ direction.set(x,y).sub(position).nor(); } public void fuzzyLookAtPoint(Vector2 point, float tolerance){ float px = point.x + MathUtils.randomTriangular(tolerance), py = point.y + MathUtils.randomTriangular(tolerance); lookAtPoint(px,py); } @Override public void reset() { sweepRate = 10; sweepAngle = 30; sweepAcc = 0; controlSpriteFlip = false; isSweeping = false; reverseSweep = false; position.set(0,0); direction.set(1,0); } }