// 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.
}
}
}