58 lines
1.4 KiB
C#
58 lines
1.4 KiB
C#
![]() |
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<T> : ActionTask
|
||
|
{
|
||
|
public BBParameter<string> key;
|
||
|
public BBParameter<string> script;
|
||
|
|
||
|
protected override async void OnExecute()
|
||
|
{
|
||
|
var currentValue = Data.Get<T>(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<T>(code,options);
|
||
|
|
||
|
Data.Set(key.value,result);
|
||
|
|
||
|
EndAction(true);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public class StringDataTask : DataTask<string>
|
||
|
{
|
||
|
|
||
|
}
|
||
|
public class IntDataTask : DataTask<int>
|
||
|
{
|
||
|
|
||
|
}
|
||
|
public class FloatDataTask : DataTask<float>
|
||
|
{
|
||
|
|
||
|
}
|
||
|
}
|