42 lines
1.1 KiB
C#
42 lines
1.1 KiB
C#
using OpenTK.Mathematics;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Voxel
|
|
{
|
|
public struct AABB
|
|
{
|
|
public Vector3 Min;
|
|
public Vector3 Max;
|
|
|
|
public AABB(Vector3 min, Vector3 max)
|
|
{
|
|
Min = min;
|
|
Max = max;
|
|
}
|
|
|
|
public static AABB FromCenter(Vector3 center, float width, float height, float depth)
|
|
{
|
|
Vector3 half = new Vector3(width / 2f, 0, depth / 2f);
|
|
return new AABB(center - half, center + new Vector3(half.X, height, half.Z));
|
|
}
|
|
|
|
public bool Intersects(AABB other)
|
|
{
|
|
return (Min.X <= other.Max.X && Max.X >= other.Min.X) &&
|
|
(Min.Y <= other.Max.Y && Max.Y >= other.Min.Y) &&
|
|
(Min.Z <= other.Max.Z && Max.Z >= other.Min.Z);
|
|
}
|
|
|
|
public bool Contains(Vector3 point)
|
|
{
|
|
return (point.X >= Min.X && point.X <= Max.X) &&
|
|
(point.Y >= Min.Y && point.Y <= Max.Y) &&
|
|
(point.Z >= Min.Z && point.Z <= Max.Z);
|
|
}
|
|
}
|
|
}
|