this repo has no description
1import { PositionInfo } from "../renderer";
2import { Node } from "../structs/node";
3import { screenToWorldSpace } from "../utils/interections";
4import { NodeManager } from "../Mangers/NodeManager";
5import { ContextMenuItem } from "../structs/ContextMenu";
6import { Nodes } from "../Nodes/Nodes";
7
8export let CanvasContextMenu: ContextMenuItem[] = Nodes.map(( node ) => {
9 if(node.isSingle){
10 return {
11 text: node.name,
12 clicked: async ( e: MouseEvent, canvas: HTMLCanvasElement, position: PositionInfo ) => {
13 let pos = screenToWorldSpace(canvas, position, e.clientX, e.clientY);
14 let id = await NodeManager.Instance.GetNewNodeId();
15
16 NodeManager.Instance.AddNode(new Node(pos, node, id));
17 },
18 hovered: false
19 }
20 } else{
21 return {
22 text: node.name,
23 menu: {
24 items: node.items!.map(x => {
25 return {
26 text: x.name,
27 clicked: async ( e: MouseEvent, canvas: HTMLCanvasElement, position: PositionInfo ) => {
28 let pos = screenToWorldSpace(canvas, position, e.clientX, e.clientY);
29 let id = await NodeManager.Instance.GetNewNodeId();
30
31 NodeManager.Instance.AddNode(new Node(pos, x, id));
32 },
33 hovered: false
34 }
35 }),
36 position: [ 0, 0 ],
37 size: [ 0, 0 ],
38 visible: true
39 },
40 hovered: false
41 }
42 }
43});