This repository has been archived on 2025-09-23. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
XericLibrary-OLD/Runtime/CollisionLOD/LodBoxCollider.cs
2023-11-28 09:20:50 +08:00

64 lines
1.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;
using XericLibrary.Runtime.Type;
namespace XericLibrary.Runtime.CollisionLOD
{
/// <summary>
/// 盒体的AABB碰撞器
/// </summary>
public class LodBoxCollider : LodColliderBase
{
#region
#endregion
#region
#endregion
#region
private static bool CheckCollision(LodBoxCollider box1, LodBoxCollider box2)
{
var box1max = box1.BoundSize.max;
var box1min = box1.BoundSize.min;
var box2max = box2.BoundSize.max;
var box2min = box2.BoundSize.min;
bool collidX = box1max.x >= box2min.x
&& box2max.x >= box1min.x;
bool collidY = box1max.y >= box2min.y
&& box2max.y >= box1min.y;
bool collidZ = box1max.z >= box2min.z
&& box2max.z >= box1min.z;
bool enableCollidX = box1.EnableCollisionAxis.x
&& box2.EnableCollisionAxis.x;
bool enableCollidY = box1.EnableCollisionAxis.y
&& box2.EnableCollisionAxis.y;
bool enableCollidZ = box1.EnableCollisionAxis.z
&& box2.EnableCollisionAxis.z;
if(!(enableCollidX && enableCollidY && enableCollidZ))
return false;
bool rescollidX = enableCollidX && collidX
|| (!enableCollidX && (collidY || collidZ));
bool rescollidY = enableCollidY && collidY
|| (!enableCollidY && (collidX || collidZ));
bool rescollidZ = enableCollidZ && collidZ
|| (!enableCollidZ && (collidX || collidY));
return rescollidX && rescollidY && rescollidZ;
}
#endregion
}
}