Scriptable Object Variables#
Variables / Scriptable Object Variables
Can Read
Can Write
Description#
The collection of Scriptable Objects of a Variable or Local Variable
Code#
using System;
using System.Collections.Generic;
using UnityEngine;
using VisualScript.Icons;
namespace VisualScript.Runtime
{
[Get, Set]
[Title("Scriptable Object Variables")]
[Category("Variables/Scriptable Object Variables")]
[Description("The collection of Scriptable Objects of a Variable or Local Variable")]
[Image(typeof(IconVariable), ColorTheme.Type.TextLight, typeof(BadgeVariable))]
[Keywords("Variable", "Local", "Global")]
[Serializable]
public class TypeCollectionScriptableObjectsVariables : TypeCollectionScriptableObjects
{
[SerializeField] private GetVariable m_Variable;
public TypeCollectionScriptableObjectsVariables()
{
this.m_Variable = new GetVariable();
}
public TypeCollectionScriptableObjectsVariables(LocalVariable localVariable)
{
this.m_Variable = new GetVariable(localVariable);
}
public TypeCollectionScriptableObjectsVariables(GlobalVariable variable)
{
this.m_Variable = new GetVariable(variable);
}
public override void Get(Args args, List<ScriptableObject> values)
{
values.Clear();
Variable variable = this.m_Variable.Get(args);
if (variable == null) return;
int count = variable.Count;
for (int i = 0; i < count; ++i)
{
values.Add(variable.Get<ScriptableObject>(i));
}
}
public override void Set(List<ScriptableObject> values, Args args)
{
Variable variable = this.m_Variable.Get(args);
if (variable == null) return;
variable.Clear();
for (int i = 0; i < values.Count; ++i)
{
variable.Insert(i, values[i]);
}
}
public override string ToString()
{
return this.m_Variable.ToString();
}
protected override SubscriptionMode Subscription => SubscriptionMode.OnChange;
}
}