You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
189 lines
5.9 KiB
C#
189 lines
5.9 KiB
C#
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using Bolt;
|
|
|
|
namespace Game
|
|
{
|
|
[UnitTitle("删除实体")]
|
|
[UnitSubtitle("NodeDestroyEntity")]
|
|
[UnitCategory("Game-Entity")]
|
|
public class NodeDestroyEntity : NodeDefault
|
|
{
|
|
public ValueInput entity;
|
|
protected override void Def()
|
|
{
|
|
entity = ValueInput<int>("entity");
|
|
}
|
|
protected override void Run(Flow flow)
|
|
{
|
|
Util.DestroyEntity(flow.GetValue<int>(entity));
|
|
}
|
|
}
|
|
|
|
[UnitTitle("实体位置")]
|
|
[UnitSubtitle("NodeEntityPosition")]
|
|
[UnitCategory("Game-Entity")]
|
|
public class NodeEntityPosition : NodeDefault
|
|
{
|
|
public ValueInput entity;
|
|
public ValueOutput pos;
|
|
protected override void Def()
|
|
{
|
|
entity = ValueInput<int>("entity");
|
|
pos = ValueOutput<Vector3>("pos");
|
|
}
|
|
protected override void Run(Flow flow)
|
|
{
|
|
var e = flow.GetValue<int>(entity);
|
|
var p = Util.EntityLogicPos(e);
|
|
flow.SetValue(pos, p);
|
|
}
|
|
}
|
|
[UnitTitle("实体距离")]
|
|
[UnitSubtitle("NodeEntityDistance")]
|
|
[UnitCategory("Game-Entity")]
|
|
public class NodeEntityDistance : NodeDefault
|
|
{
|
|
public ValueInput entity1;
|
|
public ValueInput entity2;
|
|
public ValueOutput distance;
|
|
protected override void Def()
|
|
{
|
|
entity1 = ValueInput<int>("entity1");
|
|
entity2 = ValueInput<int>("entity2");
|
|
distance = ValueOutput<float>("distance");
|
|
}
|
|
protected override void Run(Flow flow)
|
|
{
|
|
var e1 = flow.GetValue<int>(entity1);
|
|
var e2 = flow.GetValue<int>(entity2);
|
|
var dist = Util.EntityDistance(e1, e2);
|
|
flow.SetValue(distance, dist);
|
|
}
|
|
}
|
|
[UnitTitle("实体偏移向量(1->2)")]
|
|
[UnitSubtitle("NodeEntityOffset")]
|
|
[UnitCategory("Game-Entity")]
|
|
public class NodeEntityOffset : NodeDefault
|
|
{
|
|
public ValueInput entity1;
|
|
public ValueInput entity2;
|
|
public ValueOutput offset;
|
|
protected override void Def()
|
|
{
|
|
entity1 = ValueInput<int>("entity1");
|
|
entity2 = ValueInput<int>("entity2");
|
|
offset = ValueOutput<Vector3>("offset");
|
|
}
|
|
protected override void Run(Flow flow)
|
|
{
|
|
var e1 = flow.GetValue<int>(entity1);
|
|
var e2 = flow.GetValue<int>(entity2);
|
|
var dist = Util.EntityOffset(e1, e2);
|
|
flow.SetValue(offset, dist);
|
|
}
|
|
}
|
|
[UnitTitle("实体是否浮空")]
|
|
[UnitSubtitle("NodeEntityInAir")]
|
|
[UnitCategory("Game-Entity")]
|
|
public class NodeEntityInAir : NodeDefault
|
|
{
|
|
public ValueInput entity;
|
|
public ValueOutput inAir;
|
|
protected override void Def()
|
|
{
|
|
entity = ValueInput<int>("entity");
|
|
inAir = ValueOutput<bool>("inAir");
|
|
}
|
|
protected override void Run(Flow flow)
|
|
{
|
|
var e = flow.GetValue<int>(entity);
|
|
var b = Util.EntityInAir(e);
|
|
flow.SetValue(inAir, b);
|
|
}
|
|
}
|
|
[UnitTitle("移动")]
|
|
[UnitSubtitle("NodeEntityMove")]
|
|
[UnitCategory("Game-Entity")]
|
|
public class NodeEntityMove : NodeDefault
|
|
{
|
|
public ValueInput direction { get; private set; }
|
|
protected override void Def()
|
|
{
|
|
direction = ValueInput<Vector3>("direction");
|
|
}
|
|
protected override void Run(Flow flow)
|
|
{
|
|
var e = data.Entity;
|
|
var d = flow.GetValue<Vector3>(direction);
|
|
d = new Vector3(d.x, 0, d.z);
|
|
Util.EntityMove(e, d);
|
|
}
|
|
}
|
|
[UnitTitle("停止移动")]
|
|
[UnitSubtitle("NodeEntityStop")]
|
|
[UnitCategory("Game-Entity")]
|
|
public class NodeEntityStop : NodeDefault
|
|
{
|
|
protected override void Run(Flow flow)
|
|
{
|
|
var e = data.Entity;
|
|
Util.EntityStopMove(e);
|
|
}
|
|
}
|
|
[UnitTitle("获取主角")]
|
|
[UnitSubtitle("NodeGetMaster")]
|
|
[UnitCategory("Game-Entity")]
|
|
public class NodeGetMaster : NodeDefault
|
|
{
|
|
public ValueOutput master { get; private set; }
|
|
protected override void Def()
|
|
{
|
|
master = ValueOutput<int>("master");
|
|
}
|
|
protected override void Run(Flow flow)
|
|
{
|
|
flow.SetValue(master, Util.GetMasterID());
|
|
}
|
|
}
|
|
[UnitTitle("获取所有敌人")]
|
|
[UnitSubtitle("NodeGetAllEnemies")]
|
|
[UnitCategory("Game-Entity")]
|
|
public class NodeGetAllEnemies : NodeDefault
|
|
{
|
|
public ValueOutput list { get; private set; }
|
|
protected override void Def()
|
|
{
|
|
list = ValueOutput<List<int>>("list");
|
|
}
|
|
protected override void Run(Flow flow)
|
|
{
|
|
flow.SetValue(list, Util.GetAllEnemies());
|
|
}
|
|
}
|
|
[UnitTitle("按照实体距离排序")]
|
|
[UnitSubtitle("NodeSortByDistance")]
|
|
[UnitCategory("Game-Entity")]
|
|
public class NodeSortByDistance : NodeDefault
|
|
{
|
|
public ValueInput entity { get; private set; }
|
|
public ValueInput list { get; private set; }
|
|
public ValueOutput result { get; private set; }
|
|
protected override void Def()
|
|
{
|
|
entity = ValueInput<int>("entity");
|
|
list = ValueInput<List<int>>("list");
|
|
result = ValueOutput<List<int>>("list");
|
|
}
|
|
protected override void Run(Flow flow)
|
|
{
|
|
var e = flow.GetValue<int>(entity);
|
|
var l = flow.GetValue<List<int>>(list);
|
|
l.Sort((left, right) =>
|
|
{
|
|
return (int)((Util.EntityDistance(e, left) - Util.EntityDistance(e, right)) * 10);
|
|
});
|
|
flow.SetValue(result, l);
|
|
}
|
|
}
|
|
} |