From cda719c9a217f43a9be606ae45975f2598251c92 Mon Sep 17 00:00:00 2001 From: austin Date: Tue, 16 Nov 2021 00:15:07 -0500 Subject: [PATCH] Tweak crosshair logic --- .../electrosphere/engine/LoadingThread.java | 12 +++++++++ .../client/targeting/crosshair/Crosshair.java | 27 ++++++++++--------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/main/java/electrosphere/engine/LoadingThread.java b/src/main/java/electrosphere/engine/LoadingThread.java index 48240daf..da3d4d50 100644 --- a/src/main/java/electrosphere/engine/LoadingThread.java +++ b/src/main/java/electrosphere/engine/LoadingThread.java @@ -620,6 +620,18 @@ public class LoadingThread extends Thread { //give evil goblin sword Entity goblinSword = ItemUtils.spawnBasicItem("Katana"); AttachUtils.attachEntityToEntityAtBone(goblin, goblinSword, "Bone.031"); + +// goblin = CreatureUtils.spawnBasicCreature("Goblin"); +// CollisionObjUtils.positionCharacter(goblin, new Vector3f(3, 0, 4)); +// EntityUtils.getScale(goblin).set(0.005f); +// +// goblin = CreatureUtils.spawnBasicCreature("Goblin"); +// CollisionObjUtils.positionCharacter(goblin, new Vector3f(4, 0, 3)); +// EntityUtils.getScale(goblin).set(0.005f); +// +// goblin = CreatureUtils.spawnBasicCreature("Goblin"); +// CollisionObjUtils.positionCharacter(goblin, new Vector3f(3, 0, 3)); +// EntityUtils.getScale(goblin).set(0.005f); // //attach ai to evil goblin // MindlessAttacker.attachToCreature(goblin); diff --git a/src/main/java/electrosphere/game/client/targeting/crosshair/Crosshair.java b/src/main/java/electrosphere/game/client/targeting/crosshair/Crosshair.java index 8838f8f4..8cf5e138 100644 --- a/src/main/java/electrosphere/game/client/targeting/crosshair/Crosshair.java +++ b/src/main/java/electrosphere/game/client/targeting/crosshair/Crosshair.java @@ -1,5 +1,6 @@ package electrosphere.game.client.targeting.crosshair; +import electrosphere.entity.CameraEntityUtils; import electrosphere.entity.Entity; import electrosphere.entity.EntityUtils; import electrosphere.main.Globals; @@ -28,27 +29,29 @@ public class Crosshair { public static void checkTargetable(){ if(crossHairEntity != null && Globals.playerCharacter != null){ Vector3d parentPos = EntityUtils.getPosition(Globals.playerCharacter); - if(currentTarget == null){ +// if(currentTarget == null){ Entity target = null; double dist = 100; for(Entity entity : Globals.entityManager.getTargetables()){ - double currentDist = parentPos.distance(EntityUtils.getPosition(entity)); - if(currentDist < dist && currentDist <= TARGET_MAX_DIST && entity != Globals.playerCharacter){ - target = entity; - dist = currentDist; - } + Vector3d entityPos = EntityUtils.getPosition(entity); + double currentDist = parentPos.distance(entityPos); + double currentAngleDiff = new Vector3d(entityPos).sub(parentPos).normalize().dot(new Vector3d(CameraEntityUtils.getCameraEye(Globals.playerCamera))); + if(currentDist + currentAngleDiff < dist && currentDist <= TARGET_MAX_DIST && entity != Globals.playerCharacter){ + target = entity; + dist = currentDist + currentAngleDiff; + } } if(target != null){ // System.out.println("Found target!"); currentTarget = target; EntityUtils.setVisible(crossHairEntity, true); } - } else { - if(parentPos.distance(EntityUtils.getPosition(currentTarget)) > TARGET_MAX_DIST){ - currentTarget = null; - EntityUtils.setVisible(crossHairEntity, false); - } - } +// } else { +// if(parentPos.distance(EntityUtils.getPosition(currentTarget)) > TARGET_MAX_DIST){ +// currentTarget = null; +// EntityUtils.setVisible(crossHairEntity, false); +// } +// } } }