UnityGame/Library/PackageCache/com.unity.visualscripting/Editor/VisualScripting.Flow/FlowGraphUnitUISample.cs
2024-10-27 10:53:47 +03:00

62 lines
1.6 KiB
C#

#if VISUAL_SCRIPT_INTERNAL
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Unity.VisualScripting;
using UnityEditor;
using UnityEngine;
public class FlowGraphUnitUISample : RuntimeFlowGraph
{
[MenuItem("Tools/Visual Scripting/Internal/Create Node UI Samples", priority = LudiqProduct.DeveloperToolsMenuPriority + 403)]
public static void CreateUnitUISamples()
{
(new FlowGraphUnitUISample()).CreateGraphUISample();
}
private void CreateGraphUISample()
{
CreateGraph();
IEnumerable<Type> GetEventUnitTypes() => AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes().Where(t => typeof(IUnit).IsAssignableFrom(t))).Where(t => t.IsClass && !t.IsAbstract);
Vector2 position = Vector2.zero;
int index = 0;
foreach (var unitType in GetEventUnitTypes())
{
try
{
string name = unitType.Assembly.GetName().Name;
string space = unitType.FullName;
var unit = Activator.CreateInstance(name, space);
IUnit b = (IUnit)unit.Unwrap();
b.position = position;
if (index % 10 == 0)
{
position.x = 0;
position.y += 180;
}
position.x += 180;
AddUnit(b, position);
index++;
}
catch (Exception e)
{
Debug.LogException(e);
}
}
}
}
#endif