mirror of
https://github.com/GTA-ASM/SanAndreasUnity
synced 2024-11-10 06:34:16 +00:00
when sampling target position, do multi-sampling with distance levels
This commit is contained in:
parent
3da0a75562
commit
7ee9bbe425
2 changed files with 21 additions and 1 deletions
|
@ -561,6 +561,10 @@ MonoBehaviour:
|
|||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
warpSampleDistance: 4.5
|
||||
destinationSampleDistances:
|
||||
- 3
|
||||
- 8
|
||||
- 100
|
||||
--- !u!1 &1531309216951106
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
|
@ -19,6 +19,8 @@ namespace SanAndreasUnity.Utilities
|
|||
|
||||
public float warpSampleDistance = 4.5f;
|
||||
|
||||
public float[] destinationSampleDistances = new float[] { 3f, 8f, 100f };
|
||||
|
||||
public Vector3 DesiredDirection
|
||||
{
|
||||
get
|
||||
|
@ -293,7 +295,7 @@ namespace SanAndreasUnity.Utilities
|
|||
// TODO: performance optimization: this can be done "asyncly": register pathfinding request, and process
|
||||
// requests from all agents in Update() function of some Manager script, with some time limit (eg. 1 ms)
|
||||
|
||||
if (NavMesh.SamplePosition(this.Destination.Value, out var hit, 100f, navMeshAgent.areaMask))
|
||||
if (this.SamplePosition(this.Destination.Value, this.destinationSampleDistances, out var hit))
|
||||
{
|
||||
// TODO: re-use NavMeshPath object
|
||||
var navMeshPath = new NavMeshPath();
|
||||
|
@ -320,6 +322,20 @@ namespace SanAndreasUnity.Utilities
|
|||
this.NavMeshAgent.ResetPath();
|
||||
}
|
||||
|
||||
private bool SamplePosition(Vector3 pos, float[] sampleDistances, out NavMeshHit hit)
|
||||
{
|
||||
int areaMask = this.NavMeshAgent.areaMask;
|
||||
|
||||
for (int i = 0; i < sampleDistances.Length; i++)
|
||||
{
|
||||
if (NavMesh.SamplePosition(pos, out hit, sampleDistances[i], areaMask))
|
||||
return true;
|
||||
}
|
||||
|
||||
hit = default;
|
||||
return false;
|
||||
}
|
||||
|
||||
private void OnDrawGizmosSelected()
|
||||
{
|
||||
if (null == this.NavMeshAgent)
|
||||
|
|
Loading…
Reference in a new issue