protected override JobHandle OnUpdate(JobHandle inputDeps) { // EntityCommandBuffer ecb = barrier.CreateCommandBuffer () ; NativeArray <Entity> na_collisionChecksEntities = group.ToEntityArray(Allocator.TempJob); ComponentDataFromEntity <OctreeEntityPair4CollisionData> a_octreeEntityPair4CollisionData = GetComponentDataFromEntity <OctreeEntityPair4CollisionData> (); ComponentDataFromEntity <RayData> a_rayData = GetComponentDataFromEntity <RayData> (); ComponentDataFromEntity <RayMaxDistanceData> a_rayMaxDistanceData = GetComponentDataFromEntity <RayMaxDistanceData> (); ComponentDataFromEntity <IsCollidingData> a_isCollidingData = GetComponentDataFromEntity <IsCollidingData> (); // Test ray // Debug // ! Ensure test this only with single, or at most few ray entiities. ComponentDataFromEntity <RayEntityPair4CollisionData> a_rayEntityPair4CollisionData = new ComponentDataFromEntity <RayEntityPair4CollisionData> (); // As empty. IsRayColliding_Common._DebugRays(ref na_collisionChecksEntities, ref a_rayData, ref a_rayMaxDistanceData, ref a_isCollidingData, ref a_rayEntityPair4CollisionData, false, false); na_collisionChecksEntities.Dispose(); // Test ray Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); // Debug.DrawLine ( ray.origin, ray.origin + ray.direction * 100, Color.red ) ; // int i_groupLength = group.CalculateLength () ; JobHandle setRayTestJobHandle = new SetRayTestJob { // a_collisionChecksEntities = na_collisionChecksEntities, ray = ray, // a_rayData = a_rayData, // a_rayMaxDistanceData = a_rayMaxDistanceData, }.Schedule(group, inputDeps); JobHandle jobHandle = new Job { // a_collisionChecksEntities = na_collisionChecksEntities, // Octree entity pair, for collision checks a_isActiveTag = GetComponentDataFromEntity <IsActiveTag> (true), a_octreeRootNodeData = GetComponentDataFromEntity <RootNodeData> (true), nodeBufferElement = GetBufferFromEntity <NodeBufferElement> (true), nodeInstancesIndexBufferElement = GetBufferFromEntity <NodeInstancesIndexBufferElement> (true), nodeChildrenBufferElement = GetBufferFromEntity <NodeChildrenBufferElement> (true), instanceBufferElement = GetBufferFromEntity <InstanceBufferElement> (true) }.Schedule(group, setRayTestJobHandle); return(jobHandle); }
protected override JobHandle OnUpdate(JobHandle inputDeps) { // EntityCommandBuffer ecb = barrier.CreateCommandBuffer () ; EntityArray a_collisionChecksEntities = group.GetEntityArray(); ComponentDataFromEntity <RayEntityPair4CollisionData> a_rayEntityPair4CollisionData = GetComponentDataFromEntity <RayEntityPair4CollisionData> (); ComponentDataFromEntity <IsCollidingData> a_isCollidingData = GetComponentDataFromEntity <IsCollidingData> (); BufferFromEntity <CollisionInstancesBufferElement> collisionInstancesBufferElement = GetBufferFromEntity <CollisionInstancesBufferElement> (); ComponentDataFromEntity <RootNodeData> a_octreeRootNodeData = GetComponentDataFromEntity <RootNodeData> (); BufferFromEntity <NodeBufferElement> nodeBufferElement = GetBufferFromEntity <NodeBufferElement> (); BufferFromEntity <NodeInstancesIndexBufferElement> nodeInstancesIndexBufferElement = GetBufferFromEntity <NodeInstancesIndexBufferElement> (); BufferFromEntity <NodeChildrenBufferElement> nodeChildrenBufferElement = GetBufferFromEntity <NodeChildrenBufferElement> (); BufferFromEntity <InstanceBufferElement> instanceBufferElement = GetBufferFromEntity <InstanceBufferElement> (); // Ray entity pair, for collision checks ComponentDataFromEntity <IsActiveTag> a_isActiveTag = GetComponentDataFromEntity <IsActiveTag> (); ComponentDataFromEntity <RayData> a_rayData = GetComponentDataFromEntity <RayData> (); ComponentDataFromEntity <RayMaxDistanceData> a_rayMaxDistanceData = GetComponentDataFromEntity <RayMaxDistanceData> (); // Test ray // Debug // ! Ensure test this only with single, or at most few ray entiities. GetCollidingRayInstances_Common._DebugRays(barrier.CreateCommandBuffer(), a_collisionChecksEntities, a_rayData, a_rayMaxDistanceData, a_isCollidingData, collisionInstancesBufferElement, a_rayEntityPair4CollisionData, false, false); // Test ray Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); // Debug.DrawLine ( ray.origin, ray.origin + ray.direction * 100, Color.red ) ; int i_groupLength = group.CalculateLength(); var setRayTestJob = new SetRayTestJob { a_collisionChecksEntities = a_collisionChecksEntities, a_rayEntityPair4CollisionData = a_rayEntityPair4CollisionData, ray = ray, a_rayData = a_rayData, // a_rayMaxDistanceData = a_rayMaxDistanceData, }.Schedule(i_groupLength, 8, inputDeps); var job = new Job { //ecb = ecb, a_collisionChecksEntities = a_collisionChecksEntities, a_rayEntityPair4CollisionData = a_rayEntityPair4CollisionData, a_isCollidingData = a_isCollidingData, collisionInstancesBufferElement = collisionInstancesBufferElement, a_octreeRootNodeData = a_octreeRootNodeData, nodeBufferElement = nodeBufferElement, nodeInstancesIndexBufferElement = nodeInstancesIndexBufferElement, nodeChildrenBufferElement = nodeChildrenBufferElement, instanceBufferElement = instanceBufferElement, // Ray entity pair, for collision checks a_isActiveTag = a_isActiveTag, a_rayData = a_rayData, a_rayMaxDistanceData = a_rayMaxDistanceData, }.Schedule(i_groupLength, 8, setRayTestJob); return(job); }