// 27 Slicer // Copyright 2021 Deftly Games // https://slicer.deftly.games/ using Slicer.Core; using System; using UnityEngine; namespace Slicer { /// /// BoxColliderDetails is used to keep track of information about a single BoxCollider that is being sliced. /// [Serializable] public class BoxColliderDetails : ColliderDetails { /// /// The BoxCollider on the GameObject being tracked by this details object. /// [SerializeReference] public BoxCollider BoxCollider; /// /// The BoxColliders original properties, measured in the object's local space. /// /// /// This is the original values of BoxCollider.center and BoxCollider.size before the BoxCollider was sliced. /// public Bounds OriginalColliderProperties; /// /// The BoxColliders sliced properties, measured in the object's local space. /// /// /// This is the sliced values of BoxCollider.center and BoxCollider.size after the BoxCollider is sliced. /// public Bounds SlicedColliderProperties; /// public override void DisableSlicing() { if (BoxCollider != null) { BoxCollider.center = OriginalColliderProperties.center; BoxCollider.size = OriginalColliderProperties.size; } } /// public override void EnableSlicing() { if (BoxCollider != null) { BoxCollider.center = SlicedColliderProperties.center; BoxCollider.size = SlicedColliderProperties.size; } } /// public override void FinalizeSlicing() { EnableSlicing(); } /// public override Hash128 CalculateHash() { var hash = base.CalculateHash(); var originalColliderPropertiesHash = HashUtility.CalculateHash(OriginalColliderProperties); HashUtility.AppendHash(originalColliderPropertiesHash, ref hash); if (BoxCollider != null) { var enabledColliderHash = HashUtility.CalculateHash(BoxCollider.enabled, 5); HashUtility.AppendHash(enabledColliderHash, ref hash); } return hash; } /// public override void Destroy() { // Nothing to destroy. } } }