少年修仙传客户端代码仓库
hch
2025-06-12 204ef05a831c9484e2abc561d27ecbff7c797453
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
//
// DrawTargetObjectEditor.cs
//
// Dynamic Shadow Projector
//
// Copyright 2015 NYAHOON GAMES PTE. LTD. All Rights Reserved.
//
 
using UnityEngine;
using UnityEditor;
 
namespace DynamicShadowProjector.Editor {
    [CustomEditor(typeof(DrawTargetObject))]
    public class DrawTargetObjectEditor : EditorBase {
        void OnEnable()
        {
            DrawTargetObject component = target as DrawTargetObject;
            if (component.shadowShader == null && (component.replacementShaders == null || component.replacementShaders.Length == 0)) {
                component.shadowShader = FindMaterial("DynamicShadowProjector/Shadow/Opaque");
                component.replacementShaders = new DrawTargetObject.ReplaceShader[2];
                component.replacementShaders[0].renderType = "Transparent";
                component.replacementShaders[0].shader = Shader.Find("DynamicShadowProjector/Shadow/Transparent");
                component.replacementShaders[1].renderType = "TransparentCutout";
                component.replacementShaders[1].shader = component.replacementShaders[0].shader;
                serializedObject.Update();
                EditorUtility.SetDirty(component);
            }
        }
        static bool s_showAdvancedOptions = false;
        public override void OnInspectorGUI ()
        {
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("Online Document");
            if (GUILayout.Button("<color=blue>http://nyahoon.com/products/dynamic-shadow-projector/draw-target-object-component</color>", richTextStyle)) {
                Application.OpenURL("http://nyahoon.com/products/dynamic-shadow-projector/draw-target-object-component");
            }
            EditorGUILayout.EndHorizontal();
            bool isGUIEnabled = GUI.enabled;
            EditorGUILayout.PropertyField(serializedObject.FindProperty("m_target"));
            SerializedProperty prop = serializedObject.FindProperty("m_renderChildren");
            EditorGUILayout.PropertyField(prop);
            ++EditorGUI.indentLevel;
            GUI.enabled = isGUIEnabled && prop.boolValue;
            EditorGUILayout.PropertyField(serializedObject.FindProperty("m_layerMask"));
            GUI.enabled = isGUIEnabled;
            --EditorGUI.indentLevel;
            prop = serializedObject.FindProperty("m_textureAlignment");
            EditorGUILayout.PropertyField(prop);
            bool bUpdate = prop.intValue != (int)DrawTargetObject.TextureAlignment.None;
            prop = serializedObject.FindProperty("m_followTarget");
            EditorGUILayout.PropertyField(prop);
            bUpdate = bUpdate || prop.boolValue;
            ++EditorGUI.indentLevel;
            GUI.enabled = isGUIEnabled && bUpdate;
            EditorGUILayout.PropertyField(serializedObject.FindProperty("m_updateFunction"));
            GUI.enabled = isGUIEnabled;
            --EditorGUI.indentLevel;
            EditorGUILayout.PropertyField(serializedObject.FindProperty("m_targetDirection"));
 
            s_showAdvancedOptions = GUILayout.Toggle(s_showAdvancedOptions, "Show Advanced Options");
            if (s_showAdvancedOptions) {
                ++EditorGUI.indentLevel;
                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_shadowShader"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("m_replacementShaders"), true);
                --EditorGUI.indentLevel;
            }
            serializedObject.ApplyModifiedProperties();
        }
 
    }
}