1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System;
using UnityEngine;
namespace AmplifyShaderEditor
{
[Serializable]
public class MatrixParentNode : PropertyNode
{
private readonly string[] AvailablePropertyTypeLabels = { PropertyType.Constant.ToString(), PropertyType.Global.ToString(), "Instanced" };
private readonly int[] AvailablePropertyTypeValues = { (int)PropertyType.Constant, (int)PropertyType.Global , (int)PropertyType.InstancedProperty };
protected bool m_isEditingFields;
[SerializeField]
protected Matrix4x4 m_defaultValue = Matrix4x4.identity;
[SerializeField]
protected Matrix4x4 m_materialValue = Matrix4x4.identity;
[NonSerialized]
protected Matrix4x4 m_previousValue;
private UpperLeftWidgetHelper m_upperLeftWidget = new UpperLeftWidgetHelper();
public MatrixParentNode() : base() { }
public MatrixParentNode( int uniqueId, float x, float y, float width, float height ) : base( uniqueId, x, y, width, height ) { }
protected override void CommonInit( int uniqueId )
{
base.CommonInit( uniqueId );
m_freeType = false;
m_showVariableMode = true;
}
public override void AfterCommonInit()
{
base.AfterCommonInit();
m_hasLeftDropdown = true;
m_drawAttributes = false;
m_availableAttribs.Clear();
if( PaddingTitleLeft == 0 )
{
PaddingTitleLeft = Constants.PropertyPickerWidth + Constants.IconsLeftRightMargin;
if( PaddingTitleRight == 0 )
PaddingTitleRight = Constants.PropertyPickerWidth + Constants.IconsLeftRightMargin;
}
}
protected void DrawParameterType()
{
PropertyType parameterType = (PropertyType)EditorGUILayoutIntPopup( ParameterTypeStr, (int)m_currentParameterType, AvailablePropertyTypeLabels, AvailablePropertyTypeValues );
if( parameterType != m_currentParameterType )
{
ChangeParameterType( parameterType );
}
}
public override void Draw( DrawInfo drawInfo )
{
base.Draw( drawInfo );
PropertyType parameterType = (PropertyType)m_upperLeftWidget.DrawWidget( this, (int)m_currentParameterType, AvailablePropertyTypeLabels, AvailablePropertyTypeValues );
if( parameterType != m_currentParameterType )
{
ChangeParameterType( parameterType );
}
}
public override void DrawMainPropertyBlock()
{
DrawParameterType();
base.DrawMainPropertyBlock();
}
public override void Destroy()
{
base.Destroy();
m_upperLeftWidget = null;
}
public override void SetGlobalValue() { Shader.SetGlobalMatrix( m_propertyName, m_defaultValue ); }
public override void FetchGlobalValue() { m_materialValue = Shader.GetGlobalMatrix( m_propertyName ); }
}
}
|