A game about forced loneliness, made by TACStudios
1using System.Linq;
2using UnityEngine;
3using UnityEditor.Graphing;
4using UnityEditor.ShaderGraph.Drawing.Controls;
5using UnityEditor.ShaderGraph.Internal;
6
7namespace UnityEditor.ShaderGraph
8{
9 internal struct RGBANodeOutput
10 {
11 const string kRGBAName = "RGBA";
12 const string kRName = "R";
13 const string kGName = "G";
14 const string kBName = "B";
15 const string kAName = "A";
16
17 public int rgbaOutput;
18 public int rOutput;
19 public int gOutput;
20 public int bOutput;
21 public int aOutput;
22
23 public MaterialSlot rgba;
24 public MaterialSlot r;
25 public MaterialSlot g;
26 public MaterialSlot b;
27 public MaterialSlot a;
28
29 public ShaderStageCapability capabilities;
30
31 public static RGBANodeOutput NewDefault()
32 {
33 return new RGBANodeOutput()
34 {
35 rgba = null,
36 r = null,
37 g = null,
38 b = null,
39 a = null,
40 capabilities = ShaderStageCapability.None
41 };
42 }
43
44 public void CreateNodes(AbstractMaterialNode node, ShaderStageCapability newCapabilities, int rgbaSlot, int rSlot, int gSlot, int bSlot, int aSlot)
45 {
46 capabilities = newCapabilities;
47 rgbaOutput = rgbaSlot;
48 rOutput = rSlot;
49 gOutput = gSlot;
50 bOutput = bSlot;
51 aOutput = aSlot;
52 rgba = node.AddSlot(new Vector4MaterialSlot(rgbaOutput, kRGBAName, kRGBAName, SlotType.Output, Vector4.zero, capabilities));
53 r = node.AddSlot(new Vector1MaterialSlot(rOutput, kRName, kRName, SlotType.Output, 0.0f, capabilities));
54 g = node.AddSlot(new Vector1MaterialSlot(gOutput, kGName, kGName, SlotType.Output, 0.0f, capabilities));
55 b = node.AddSlot(new Vector1MaterialSlot(bOutput, kBName, kBName, SlotType.Output, 0.0f, capabilities));
56 a = node.AddSlot(new Vector1MaterialSlot(aOutput, kAName, kAName, SlotType.Output, 0.0f, capabilities));
57 }
58
59 public void SetCapabilities(ShaderStageCapability newCapabilities)
60 {
61 if (newCapabilities == capabilities)
62 return;
63
64 capabilities = newCapabilities;
65 rgba.stageCapability = capabilities;
66 r.stageCapability = capabilities;
67 g.stageCapability = capabilities;
68 b.stageCapability = capabilities;
69 a.stageCapability = capabilities;
70 }
71 }
72}