열차 목업의 내부 확인용 프로젝트
smchoi
2024-07-24 ec231f4110c782d44ea2820a1eaaa7a5711c6f16
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
using UnityEngine;
using System;
using UnityEditor;
 
 
namespace UnityStandardAssets.Water
{
    [CustomEditor(typeof(GerstnerDisplace))]
    public class GerstnerDisplaceEditor : Editor
    {
        private SerializedObject serObj;
 
        public void OnEnable()
        {
            serObj = new SerializedObject(target);
        }
 
        public override void OnInspectorGUI()
        {
            serObj.Update();
 
            GameObject go = ((GerstnerDisplace)serObj.targetObject).gameObject;
            WaterBase wb = (WaterBase)go.GetComponent(typeof(WaterBase));
            Material sharedWaterMaterial = wb.sharedMaterial;
 
            GUILayout.Label("Animates vertices using up 4 generated waves", EditorStyles.miniBoldLabel);
 
            if (sharedWaterMaterial)
            {
                Vector4 amplitude = WaterEditorUtility.GetMaterialVector("_GAmplitude", sharedWaterMaterial);
                Vector4 frequency = WaterEditorUtility.GetMaterialVector("_GFrequency", sharedWaterMaterial);
                Vector4 steepness = WaterEditorUtility.GetMaterialVector("_GSteepness", sharedWaterMaterial);
                Vector4 speed = WaterEditorUtility.GetMaterialVector("_GSpeed", sharedWaterMaterial);
                Vector4 directionAB = WaterEditorUtility.GetMaterialVector("_GDirectionAB", sharedWaterMaterial);
                Vector4 directionCD = WaterEditorUtility.GetMaterialVector("_GDirectionCD", sharedWaterMaterial);
 
                amplitude = EditorGUILayout.Vector4Field("Amplitude (Height offset)", amplitude);
                frequency = EditorGUILayout.Vector4Field("Frequency (Tiling)", frequency);
                steepness = EditorGUILayout.Vector4Field("Steepness", steepness);
                speed = EditorGUILayout.Vector4Field("Speed", speed);
                directionAB = EditorGUILayout.Vector4Field("Direction scale (Wave 1 (X,Y) and 2 (Z,W))", directionAB);
                directionCD = EditorGUILayout.Vector4Field("Direction scale (Wave 3 (X,Y) and 4 (Z,W))", directionCD);
 
                if (GUI.changed)
                {
                    WaterEditorUtility.SetMaterialVector("_GAmplitude", amplitude, sharedWaterMaterial);
                    WaterEditorUtility.SetMaterialVector("_GFrequency", frequency, sharedWaterMaterial);
                    WaterEditorUtility.SetMaterialVector("_GSteepness", steepness, sharedWaterMaterial);
                    WaterEditorUtility.SetMaterialVector("_GSpeed", speed, sharedWaterMaterial);
                    WaterEditorUtility.SetMaterialVector("_GDirectionAB", directionAB, sharedWaterMaterial);
                    WaterEditorUtility.SetMaterialVector("_GDirectionCD", directionCD, sharedWaterMaterial);
                }
 
                /*
            
                Vector4 animationTiling = WaterEditorUtility.GetMaterialVector("_AnimationTiling", sharedWaterMaterial);
                Vector4 animationDirection = WaterEditorUtility.GetMaterialVector("_AnimationDirection", sharedWaterMaterial);
            
                float firstTilingU = animationTiling.x*100.0F;
                float firstTilingV = animationTiling.y*100.0F;
                float firstDirectionU = animationDirection.x;
                float firstDirectionV = animationDirection.y;
 
                float secondTilingU = animationTiling.z*100.0F;
                float secondTilingV = animationTiling.w*100.0F;
                float secondDirectionU = animationDirection.z;
                float secondDirectionV = animationDirection.w;
                        
            
                EditorGUILayout.BeginHorizontal ();
                firstTilingU = EditorGUILayout.FloatField("First Tiling U", firstTilingU);
                firstTilingV = EditorGUILayout.FloatField("First Tiling V", firstTilingV);
                EditorGUILayout.EndHorizontal ();
                EditorGUILayout.BeginHorizontal ();
                secondTilingU = EditorGUILayout.FloatField("Second Tiling U", secondTilingU);
                secondTilingV = EditorGUILayout.FloatField("Second Tiling V", secondTilingV);
                EditorGUILayout.EndHorizontal ();
            
                EditorGUILayout.BeginHorizontal ();
                firstDirectionU = EditorGUILayout.FloatField("1st Animation U", firstDirectionU);
                firstDirectionV = EditorGUILayout.FloatField("1st Animation V", firstDirectionV);
                EditorGUILayout.EndHorizontal ();
                EditorGUILayout.BeginHorizontal ();
                secondDirectionU = EditorGUILayout.FloatField("2nd Animation U", secondDirectionU);
                secondDirectionV = EditorGUILayout.FloatField("2nd Animation V", secondDirectionV);
                EditorGUILayout.EndHorizontal ();
        
                animationDirection = new Vector4(firstDirectionU,firstDirectionV, secondDirectionU,secondDirectionV);
                animationTiling = new Vector4(firstTilingU/100.0F,firstTilingV/100.0F, secondTilingU/100.0F,secondTilingV/100.0F);
            
                WaterEditorUtility.SetMaterialVector("_AnimationTiling", animationTiling, sharedWaterMaterial);
                WaterEditorUtility.SetMaterialVector("_AnimationDirection", animationDirection, sharedWaterMaterial);
            
                EditorGUILayout.Separator ();
            
                GUILayout.Label ("Displacement Strength", EditorStyles.boldLabel);
            
                float heightDisplacement = WaterEditorUtility.GetMaterialFloat("_HeightDisplacement", sharedWaterMaterial);
            
                heightDisplacement = EditorGUILayout.Slider("Height", heightDisplacement, 0.0F, 5.0F);
                WaterEditorUtility.SetMaterialFloat("_HeightDisplacement", heightDisplacement, sharedWaterMaterial);
                */
            }
 
            serObj.ApplyModifiedProperties();
        }
    }
}