using System.Collections.Generic;
using UnityEngine;
namespace Lightbug.Utilities
{
///
/// This component represents a capsule collider in a 2D world.
///
public class BoxColliderComponent2D : ColliderComponent2D
{
BoxCollider2D boxCollider = null;
public override Vector3 Size
{
get => boxCollider.size;
set => boxCollider.size = value;
}
public override Vector3 BoundsSize => boxCollider.bounds.size;
public override Vector3 Offset
{
get => boxCollider.offset;
set => boxCollider.offset = value;
}
protected override int InternalOverlapBody(Vector3 position, Quaternion rotation, Collider2D[] unfilteredResults, List filteredResults, OverlapFilterDelegate2D filter)
{
var up = rotation * Vector3.up;
var center = position + rotation * boxCollider.offset;
var angle = rotation.eulerAngles.z;
var qht = Physics2D.queriesHitTriggers;
Physics2D.queriesHitTriggers = false;
ContactFilter.layerMask = Physics2D.DefaultRaycastLayers;
var overlaps = Physics2D.OverlapBox(
center,
boxCollider.size,
angle,
ContactFilter,
unfilteredResults
);
Physics2D.queriesHitTriggers = qht;
return FilterValidOverlaps(overlaps, unfilteredResults, filteredResults, filter);
}
protected override void Awake()
{
boxCollider = gameObject.GetOrAddComponent(true);
collider = boxCollider;
base.Awake();
}
}
}