Interactables Added

This commit is contained in:
2022-02-22 21:00:40 +03:00
parent 643460f392
commit b9a7996f44
9 changed files with 959 additions and 203 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 15ad75cf57fa64a4f9d63b84cad20918
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
namespace Interactable
{
public interface IInteractable
{
void Interact();
void ResetInteraction();
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5e5772f733b6ad4458a78277d3d383e1
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,29 @@
using UnityEngine;
namespace Interactable
{
public abstract class InteractableBase : MonoBehaviour, IInteractable
{
protected bool hasBeenInteracted = false;
public void Interact()
{
if (hasBeenInteracted)
return;
OnInteract();
hasBeenInteracted = true;
}
public void ResetInteraction()
{
if (!hasBeenInteracted)
return;
OnResetInteraction();
hasBeenInteracted = false;
}
protected abstract void OnInteract();
protected abstract void OnResetInteraction();
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1a736473a3063be4e96007c3cb46e73c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,14 @@
using UnityEngine;
using UnityEngine.Events;
namespace Interactable
{
public class UnityEventInteractable : InteractableBase
{
[SerializeField] protected UnityEvent onInteractEvent = new UnityEvent();
[SerializeField] protected UnityEvent onResetInteractionEvent = new UnityEvent();
protected override void OnInteract() => onInteractEvent?.Invoke();
protected override void OnResetInteraction() => onResetInteractionEvent?.Invoke();
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 91f70c4da2fbf6e45995a8aa8153dded
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: