From 4c5b7bdbe8c1cfef9ed7a3ef639f3f83411b2b0e Mon Sep 17 00:00:00 2001 From: nathansmithsmith Date: Fri, 27 Oct 2023 18:14:02 -0600 Subject: Targeting info on screen --- src/entities/antifaShip.c | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/entities/antifaShip.c') diff --git a/src/entities/antifaShip.c b/src/entities/antifaShip.c index c89c820..fbcb138 100644 --- a/src/entities/antifaShip.c +++ b/src/entities/antifaShip.c @@ -33,8 +33,23 @@ void initAntifaShip(Entity * entity, Game * game) { data->timeSinceLastBullet = GetTime(); data->doAutoTarget = false; data->targetedEntityId = ENTITY_NONE; + + // Targeting PID indeed (: + PIDConfig targetingPIDConfig = (PIDConfig){ + .kP = 500.0, + .kI = 0.1, + .kD = 0.0, + .angleMode = false, + .doClamp = false, + .min = 0.0, + .max = 0.0 + }; + + data->targetingPID = createPID(targetingPIDConfig); } +// Go back to burger king you elon musking loving mother fucker! + void closeAntifaShip(Entity * entity) { if (entity->data != NULL) KF_FREE(entity->data); @@ -101,9 +116,12 @@ void updateAntifaShipTarget(Game * game, Entity * entity) { } Vector3 directionToTarget = Vector3Normalize(Vector3Subtract(targetEntity->position, entity->position)); - data->gunTarget = Vector3Lerp(data->gunTarget, directionToTarget, ANTIFA_AUTO_TARGET_SPEED * t); - printf("%d %d\n", isAntifaShipGunInRange(entity, targetEntity), data->targetedEntityId); + + // Run targeting PID and update target. + float speed = runPID(Vector3Distance(data->gunTarget, directionToTarget), 0.0, &data->targetingPID); + data->gunTarget = Vector3Lerp(data->gunTarget, directionToTarget, speed * t); } else { + resetPID(&data->targetingPID); data->gunTarget = Vector3RotateByQuaternion((Vector3){0.0, 0.0, 1.0}, entity->rotation); } } -- cgit v1.2.3