using Unity.Burst; using Unity.Collections; using Unity.Mathematics; using UnityEngine; namespace GarmentButton.PathFinding { [BurstCompile] public struct DebugBox { [BurstCompile] public void Draw(float3 position, float size, Color color) { var halfSize = size / 2; var vertices = new NativeArray(8, Allocator.Temp); vertices[0] = position + new float3(-halfSize, -halfSize, -halfSize); vertices[1] = position + new float3(halfSize, -halfSize, -halfSize); vertices[2] = position + new float3(halfSize, -halfSize, halfSize); vertices[3] = position + new float3(-halfSize, -halfSize, halfSize); vertices[4] = position + new float3(-halfSize, halfSize, -halfSize); vertices[5] = position + new float3(halfSize, halfSize, -halfSize); vertices[6] = position + new float3(halfSize, halfSize, halfSize); vertices[7] = position + new float3(-halfSize, halfSize, halfSize); // Draw bottom face Debug.DrawLine(vertices[0], vertices[1], color); Debug.DrawLine(vertices[1], vertices[2], color); Debug.DrawLine(vertices[2], vertices[3], color); Debug.DrawLine(vertices[3], vertices[0], color); // Draw top face Debug.DrawLine(vertices[4], vertices[5], color); Debug.DrawLine(vertices[5], vertices[6], color); Debug.DrawLine(vertices[6], vertices[7], color); Debug.DrawLine(vertices[7], vertices[4], color); // Draw vertical lines Debug.DrawLine(vertices[0], vertices[4], color); Debug.DrawLine(vertices[1], vertices[5], color); Debug.DrawLine(vertices[2], vertices[6], color); Debug.DrawLine(vertices[3], vertices[7], color); vertices.Dispose(); } [BurstCompile] public void Draw(float3 position, float size, Color color, float time) { var halfSize = size / 2; NativeArray vertices = new NativeArray(8, Allocator.Temp); vertices[0] = position + new float3(-halfSize, -halfSize, -halfSize); vertices[1] = position + new float3(halfSize, -halfSize, -halfSize); vertices[2] = position + new float3(halfSize, -halfSize, halfSize); vertices[3] = position + new float3(-halfSize, -halfSize, halfSize); vertices[4] = position + new float3(-halfSize, halfSize, -halfSize); vertices[5] = position + new float3(halfSize, halfSize, -halfSize); vertices[6] = position + new float3(halfSize, halfSize, halfSize); vertices[7] = position + new float3(-halfSize, halfSize, halfSize); // Draw bottom face Debug.DrawLine(vertices[0], vertices[1], color, time); Debug.DrawLine(vertices[1], vertices[2], color, time); Debug.DrawLine(vertices[2], vertices[3], color, time); Debug.DrawLine(vertices[3], vertices[0], color, time); // Draw top face Debug.DrawLine(vertices[4], vertices[5], color, time); Debug.DrawLine(vertices[5], vertices[6], color, time); Debug.DrawLine(vertices[6], vertices[7], color, time); Debug.DrawLine(vertices[7], vertices[4], color, time); // Draw vertical lines Debug.DrawLine(vertices[0], vertices[4], color, time); Debug.DrawLine(vertices[1], vertices[5], color, time); Debug.DrawLine(vertices[2], vertices[6], color, time); Debug.DrawLine(vertices[3], vertices[7], color, time); vertices.Dispose(); } } }