You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
45 lines
1.4 KiB
C#
45 lines
1.4 KiB
C#
3 months ago
|
using UnityEngine;
|
||
|
using System;
|
||
|
using System.Collections;
|
||
|
using System.Linq;
|
||
|
using D2D.Utilities;
|
||
|
using static D2D.Utilities.SettingsFacade;
|
||
|
using static D2D.Utilities.CommonLazyFacade;
|
||
|
using static D2D.Utilities.CommonGameplayFacade;
|
||
|
|
||
|
namespace D2D
|
||
|
{
|
||
|
public enum InteractionType {Trigger, Collision, Both}
|
||
|
|
||
|
[RequireComponent(typeof(Rigidbody))]
|
||
|
public abstract class OnceObjectInteractorBase : SmartScript
|
||
|
{
|
||
|
protected virtual InteractionType InteractionType => InteractionType.Both;
|
||
|
|
||
|
protected bool isObjectInside;
|
||
|
|
||
|
private void OnValidate()
|
||
|
{
|
||
|
var rb = Get<Rigidbody>();
|
||
|
if (_coreData.objectInteractorValidation && rb.isKinematic)
|
||
|
{
|
||
|
rb.isKinematic = false;
|
||
|
rb.constraints = RigidbodyConstraints.FreezePosition;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
protected virtual void OnCollisionEnter(Collision other)
|
||
|
{
|
||
|
if (InteractionType == InteractionType.Both || InteractionType == InteractionType.Collision)
|
||
|
CheckInteraction(other.gameObject);
|
||
|
}
|
||
|
|
||
|
protected virtual void OnTriggerEnter(Collider other)
|
||
|
{
|
||
|
if (InteractionType == InteractionType.Both || InteractionType == InteractionType.Trigger)
|
||
|
CheckInteraction(other.gameObject);
|
||
|
}
|
||
|
|
||
|
protected abstract void CheckInteraction(GameObject other);
|
||
|
}
|
||
|
}
|