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(72)]
10 class Matrix4ShaderProperty : MatrixShaderProperty
11 {
12 public Matrix4ShaderProperty()
13 {
14 displayName = "Matrix4x4";
15 value = Matrix4x4.identity;
16 }
17
18 public override PropertyType propertyType => PropertyType.Matrix4;
19
20 internal override string GetPropertyAsArgumentString(string precisionString)
21 {
22 return $"{precisionString}4x4 {referenceName}";
23 }
24
25 internal override AbstractMaterialNode ToConcreteNode()
26 {
27 return new Matrix4Node
28 {
29 row0 = new Vector4(value.m00, value.m01, value.m02, value.m03),
30 row1 = new Vector4(value.m10, value.m11, value.m12, value.m13),
31 row2 = new Vector4(value.m20, value.m21, value.m22, value.m23),
32 row3 = new Vector4(value.m30, value.m31, value.m32, value.m33)
33 };
34 }
35
36 internal override PreviewProperty GetPreviewMaterialProperty()
37 {
38 return new PreviewProperty(propertyType)
39 {
40 name = referenceName,
41 matrixValue = value
42 };
43 }
44
45 internal override ShaderInput Copy()
46 {
47 return new Matrix4ShaderProperty()
48 {
49 displayName = displayName,
50 value = value,
51 };
52 }
53
54 public override int latestVersion => 1;
55 public override void OnAfterDeserialize(string json)
56 {
57 if (sgVersion == 0)
58 {
59 // all old matrices were declared global; yes even if flagged hybrid!
60 // maintain old behavior on versioning, users can always change the override if they wish
61 overrideHLSLDeclaration = true;
62 hlslDeclarationOverride = HLSLDeclaration.Global;
63 ChangeVersion(1);
64 }
65 }
66 }
67}