2023-01-22 16:38:23 +01:00
|
|
|
using System.Collections.Generic;
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
#pragma warning disable
|
|
|
|
|
|
|
|
namespace ABI.CCK.Components
|
|
|
|
{
|
2024-08-03 22:24:42 +02:00
|
|
|
[AddComponentMenu("ChilloutVR/CVR Variable Buffer")]
|
|
|
|
[HelpURL("https://developers.abinteractive.net/cck/components/variable-buffer/")]
|
|
|
|
public class CVRVariableBuffer : MonoBehaviour, ICCK_Component
|
2023-01-22 16:38:23 +01:00
|
|
|
{
|
|
|
|
public float defaultValue = 0f;
|
|
|
|
|
|
|
|
[HideInInspector]
|
|
|
|
public float value = 0f;
|
|
|
|
|
|
|
|
[HideInInspector]
|
|
|
|
public List<CVRInteractable> affectedInteractables = new List<CVRInteractable>();
|
|
|
|
private bool sendUpdate = true;
|
|
|
|
|
|
|
|
public void Start()
|
|
|
|
{
|
|
|
|
value = defaultValue;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void AddInteracteable(CVRInteractable interactable)
|
|
|
|
{
|
|
|
|
if (!affectedInteractables.Contains(interactable))
|
|
|
|
{
|
|
|
|
affectedInteractables.Add(interactable);
|
|
|
|
}
|
|
|
|
|
|
|
|
RemoveOrphans();
|
|
|
|
}
|
|
|
|
|
|
|
|
private void RemoveOrphans()
|
|
|
|
{
|
|
|
|
var interactablesToRemove = new List<CVRInteractable>();
|
|
|
|
|
|
|
|
foreach (var interactable in affectedInteractables)
|
|
|
|
{
|
|
|
|
var included = false;
|
|
|
|
|
|
|
|
if (interactable == null) continue;
|
|
|
|
|
|
|
|
foreach (var action in interactable.actions)
|
|
|
|
{
|
|
|
|
if (action.varBufferVal == this) included = true;
|
|
|
|
if (action.varBufferVal2 == this) included = true;
|
|
|
|
foreach (var operation in action.operations)
|
|
|
|
{
|
|
|
|
if (operation.varBufferVal == this) included = true;
|
|
|
|
if (operation.varBufferVal2 == this) included = true;
|
|
|
|
if (operation.varBufferVal3 == this) included = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if (!included) interactablesToRemove.Add(interactable);
|
|
|
|
}
|
|
|
|
|
|
|
|
foreach (var interactable in interactablesToRemove)
|
|
|
|
{
|
|
|
|
affectedInteractables.Remove(interactable);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SetValue(float _value){}
|
|
|
|
}
|
|
|
|
}
|