Selling Functionality, Picking up items, Basic computer
This commit is contained in:
@@ -13,7 +13,7 @@ public class InteractionBehaviour : MonoBehaviour, IObjectParentHolder {
|
||||
|
||||
[SerializeField] private LayerMask _interactionLayer;
|
||||
|
||||
private EmptyCounter _lastInteractedObject = null;
|
||||
private GameObject _lastInteractedObject = null;
|
||||
|
||||
public event EventHandler<OnSelectedCounterArgs> OnSelectedCounter;
|
||||
|
||||
@@ -21,7 +21,7 @@ public class InteractionBehaviour : MonoBehaviour, IObjectParentHolder {
|
||||
private Object _heldObject;
|
||||
|
||||
public class OnSelectedCounterArgs : EventArgs {
|
||||
public EmptyCounter selectedCounter;
|
||||
public GameObject selectedCounter;
|
||||
}
|
||||
|
||||
void Start() {
|
||||
@@ -43,29 +43,32 @@ public class InteractionBehaviour : MonoBehaviour, IObjectParentHolder {
|
||||
RaycastHit hit;
|
||||
Debug.DrawRay(origin, transform.forward * _interactionDistance, Color.red);
|
||||
if (Physics.Raycast(origin, transform.forward, out hit, _interactionDistance, _interactionLayer)) {
|
||||
if (hit.transform.TryGetComponent(out EmptyCounter emptyCounter)) {
|
||||
if (_lastInteractedObject != hit.transform.gameObject) {
|
||||
SetSelectedCounter(emptyCounter);
|
||||
// Debug.Log("Hitting something!");
|
||||
GameObject hitObject = hit.transform.gameObject;
|
||||
//Check if the object has a component that has the IInteractable interface
|
||||
if (hitObject.TryGetComponent(out IInteractable interactable)) {
|
||||
if(_lastInteractedObject != hitObject) {
|
||||
setSelectedObject(hitObject);
|
||||
}
|
||||
}
|
||||
else {
|
||||
SetSelectedCounter(null);
|
||||
setSelectedObject(null);
|
||||
}
|
||||
}
|
||||
else {
|
||||
SetSelectedCounter(null);
|
||||
setSelectedObject(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void Interact() {
|
||||
if (_lastInteractedObject == null) return;
|
||||
if (_lastInteractedObject.TryGetComponent(out EmptyCounter emptyCounter)) {
|
||||
emptyCounter.Interact();
|
||||
if (_lastInteractedObject.TryGetComponent(out IInteractable interactable)) {
|
||||
interactable.Interact();
|
||||
}
|
||||
}
|
||||
|
||||
private void SetSelectedCounter(EmptyCounter selectedCounter) {
|
||||
private void setSelectedObject(GameObject selectedCounter) {
|
||||
_lastInteractedObject = selectedCounter;
|
||||
OnSelectedCounter?.Invoke(this, new OnSelectedCounterArgs { selectedCounter = _lastInteractedObject });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user