using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Lightbug.Utilities { /// /// This component represents a sphere collider in a 3D world. /// public class SphereColliderComponent3D : ColliderComponent3D { SphereCollider sphereCollider = null; public override Vector3 Size { get => Vector3.one * 2f * sphereCollider.radius; set => sphereCollider.radius = value.x / 2f; } public override Vector3 BoundsSize => sphereCollider.bounds.size; public override Vector3 Offset { get => sphereCollider.center; set => sphereCollider.center = value; } protected override int InternalOverlapBody(Vector3 position, Quaternion rotation, Collider[] unfilteredResults, List filteredResults, OverlapFilterDelegate3D filter) { var center = position + rotation * sphereCollider.center; var up = rotation * Vector3.up; var overlaps = Physics.OverlapSphereNonAlloc( center, sphereCollider.radius, unfilteredResults, Physics.DefaultRaycastLayers, QueryTriggerInteraction.Ignore ); return FilterValidOverlaps(overlaps, unfilteredResults, filteredResults, filter); } protected override void Awake() { sphereCollider = gameObject.GetOrAddComponent(true); collider = sphereCollider; base.Awake(); } } }