A game about forced loneliness, made by TACStudios
1using System;
2using UnityEngine;
3using UnityEditor.Graphing;
4using UnityEditor.ShaderGraph.Internal;
5
6namespace UnityEditor.ShaderGraph
7{
8 [Serializable]
9 [BlackboardInputInfo(71)]
10 class Matrix3ShaderProperty : MatrixShaderProperty
11 {
12 public Matrix3ShaderProperty()
13 {
14 displayName = "Matrix3x3";
15 value = Matrix4x4.identity;
16 }
17
18 public override PropertyType propertyType => PropertyType.Matrix3;
19
20 internal override string GetPropertyAsArgumentString(string precisionString)
21 {
22 return $"{precisionString}3x3 {referenceName}";
23 }
24
25 internal override AbstractMaterialNode ToConcreteNode()
26 {
27 return new Matrix3Node
28 {
29 row0 = new Vector3(value.m00, value.m01, value.m02),
30 row1 = new Vector3(value.m10, value.m11, value.m12),
31 row2 = new Vector3(value.m20, value.m21, value.m22)
32 };
33 }
34
35 internal override PreviewProperty GetPreviewMaterialProperty()
36 {
37 return new PreviewProperty(propertyType)
38 {
39 name = referenceName,
40 matrixValue = value
41 };
42 }
43
44 internal override ShaderInput Copy()
45 {
46 return new Matrix3ShaderProperty()
47 {
48 displayName = displayName,
49 value = value,
50 };
51 }
52
53 public override int latestVersion => 1;
54 public override void OnAfterDeserialize(string json)
55 {
56 if (sgVersion == 0)
57 {
58 // all old matrices were declared global; yes even if flagged hybrid!
59 // maintain old behavior on versioning, users can always change the override if they wish
60 overrideHLSLDeclaration = true;
61 hlslDeclarationOverride = HLSLDeclaration.Global;
62 ChangeVersion(1);
63 }
64 }
65 }
66}