using System; using System.Collections; using System.Collections.Generic; using BITKit; using Microsoft.CodeAnalysis.CSharp.Scripting; using Microsoft.CodeAnalysis.Scripting; using NodeCanvas.Framework; using UnityEngine; namespace Net.Project.B.NodeCanvas { public abstract class DataTask : ActionTask { public BBParameter key; public BBParameter script; protected override async void OnExecute() { var currentValue = Data.Get(key.value); var options = ScriptOptions.Default .WithImports("System") .WithReferences(typeof(object).Assembly); var stringValue = currentValue?.ToString(); if (currentValue is string s) { stringValue = $"\"{s}\""; }else if (currentValue is null) { stringValue = "null"; } var code = script.value.Replace("x", stringValue); var result = await CSharpScript.EvaluateAsync(code,options); Data.Set(key.value,result); EndAction(true); } } public class StringDataTask : DataTask { } public class IntDataTask : DataTask { } public class FloatDataTask : DataTask { } }