35 lines
945 B
C#
35 lines
945 B
C#
#if GRIFFIN
|
|
using UnityEngine;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using Unity.Jobs;
|
|
using Unity.Collections;
|
|
using Unity.Burst;
|
|
|
|
namespace Pinwheel.Griffin.Physic
|
|
{
|
|
#if GRIFFIN_BURST
|
|
[BurstCompile(CompileSynchronously = false)]
|
|
#endif
|
|
public struct GTreeColliderCullJob : IJobParallelFor
|
|
{
|
|
[ReadOnly]
|
|
public NativeArray<GTreeInstance> instances; //position in local space
|
|
[WriteOnly]
|
|
public NativeArray<bool> cullResults;
|
|
|
|
public float maxDistance;
|
|
public Vector3 targetPos;
|
|
|
|
public void Execute(int index)
|
|
{
|
|
GTreeInstance tree = instances[index];
|
|
Vector3 v = targetPos - tree.position;
|
|
float sqrDistance = v.x * v.x + v.y * v.y + v.z * v.z;
|
|
float sqrMaxDistance = maxDistance * maxDistance;
|
|
cullResults[index] = sqrDistance <= sqrMaxDistance ? true : false;
|
|
}
|
|
}
|
|
}
|
|
#endif
|