Checkpoint 3 fix

修复将互斥算法由同步转成异步产生的抖动问题
This commit is contained in:
SepComet
2026-02-22 14:11:53 +08:00
parent 34b1424bb6
commit 5fb7ea499f
14 changed files with 983 additions and 44 deletions
@@ -1,5 +1,6 @@
using System.Collections.Generic;
using CustomUtility;
using CustomComponent;
namespace Entity.Weapon
{
@@ -12,6 +13,11 @@ namespace Entity.Weapon
return null;
}
if (TrySelectFromSpatialIndex(weapon, maxSqrRange, out EntityBase indexedTarget))
{
return indexedTarget;
}
EntityBase target = null;
float minSqrMagnitude = maxSqrRange > 0f ? maxSqrRange : float.MaxValue;
@@ -28,5 +34,35 @@ namespace Entity.Weapon
return target;
}
private static bool TrySelectFromSpatialIndex(WeaponBase weapon, float maxSqrRange, out EntityBase target)
{
target = null;
if (weapon == null || maxSqrRange <= 0f || weapon.CachedTransform == null)
{
return false;
}
var simulationWorld = GameEntry.SimulationWorld;
if (simulationWorld == null || !simulationWorld.UseSimulationMovement || !simulationWorld.UseJobSimulation)
{
return false;
}
if (!simulationWorld.TryGetNearestEnemyEntityId(weapon.CachedTransform.position, maxSqrRange,
out int entityId))
{
return false;
}
EnemyManagerComponent enemyManager = GameEntry.EnemyManager;
if (enemyManager == null || !enemyManager.TryGetEnemy(entityId, out EntityBase enemy))
{
return false;
}
target = enemy;
return true;
}
}
}