12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #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
|