コード例 #1
0
        private void OnEnable()
        {
            script = (StylizedGrassRenderer)target;
#if URP
            if (script.bendRenderer == null)
            {
                script.bendRenderer = PipelineUtilities.GetRenderer(DrawGrassBenders.AssetName);
                PipelineUtilities.ValidatePipelineRenderers(script.bendRenderer);

                script.OnEnable();
                script.OnDisable();
            }
#endif

            renderExtends     = serializedObject.FindProperty("renderExtends");
            followSceneCamera = serializedObject.FindProperty("followSceneCamera");
            followTarget      = serializedObject.FindProperty("followTarget");
            renderLayer       = serializedObject.FindProperty("renderLayer");
            maskEdges         = serializedObject.FindProperty("maskEdges");
            colorMap          = serializedObject.FindProperty("colorMap");
            listenToWindZone  = serializedObject.FindProperty("listenToWindZone");
            windZone          = serializedObject.FindProperty("windZone");

            layerStr = UnityEditorInternal.InternalEditorUtility.layers;
        }
コード例 #2
0
        private void OnDisable()
        {
            StylizedGrassRenderer.UnRegisterBender(this);

            if (trailRenderer)
            {
                trailRenderer.emitting = false;
            }
        }
コード例 #3
0
        private void OnEnable()
        {
            StylizedGrassRenderer.RegisterBender(this);

            if (trailRenderer)
            {
                //Hide from cameras
                trailRenderer.forceRenderingOff = true;
                trailRenderer.emitting          = true;
            }
        }
コード例 #4
0
        public void SwitchLayer(int layerNum)
        {
            //No point in switching to the same layer
            if (layerNum == this.sortingLayer)
            {
                return;
            }

            //Debug.Log("Switching layer " + layer + ">" + i);

            //Unregister with current layer
            StylizedGrassRenderer.UnRegisterBender(this);

            //Set layer
            this.sortingLayer = layerNum;

            //Register with new layer
            StylizedGrassRenderer.RegisterBender(this);
        }
コード例 #5
0
        public void OnDisable()
        {
            Instance = null;

            //Shader needs to disable texture reading, since default global textures are gray
            uv.w = 0;
            Shader.SetGlobalVector("_BendMapUV", uv);

#if UNITY_EDITOR
            UnityEditor.SceneView.duringSceneGui -= OnSceneGUI;
#endif

            if (renderCam)
            {
                DestroyImmediate(renderCam.gameObject);
                DestroyImmediate(vectorRT);
                renderCam = null;
            }

            Shader.SetGlobalVector("_GlobalWindParams", new Vector4(0f, 0f, 0f, 0f));
        }
コード例 #6
0
        public void OnEnable()
        {
            Instance = this;

            Init();

            if (colorMap)
            {
                colorMap.SetActive();
            }
            else
            {
                if (!GrassColorMapRenderer.Instance)
                {
                    GrassColorMap.DisableGlobally();
                }
            }

#if UNITY_EDITOR
            UnityEditor.SceneView.duringSceneGui += OnSceneGUI;
#endif
        }
コード例 #7
0
        public override void OnInspectorGUI()
        {
            this.Repaint();

#if !URP
            EditorGUILayout.HelpBox("The Universal Render Pipeline v" + AssetInfo.MIN_URP_VERSION + " is not installed", MessageType.Error);
#else
            serializedObject.Update();
            windParams = Shader.GetGlobalVector("_GlobalWindParams");

            EditorGUI.BeginChangeCheck();

            StylizedGrassGUI.ParameterGroup.DrawHeader(new GUIContent("Settings"));

            using (new EditorGUILayout.VerticalScope(StylizedGrassGUI.ParameterGroup.Section))
            {
                EditorGUILayout.PropertyField(renderExtends);
                EditorGUILayout.HelpBox("Resolution: " + StylizedGrassRenderer.CalculateResolution(renderExtends.floatValue).ToString() + "px (" + StylizedGrassRenderer.TexelsPerMeter + " texels/m)", MessageType.None);
                using (new EditorGUILayout.HorizontalScope())
                {
                    EditorGUILayout.PropertyField(maskEdges);
                    if (!Application.isPlaying)
                    {
                        EditorGUILayout.HelpBox("Only takes effect in Play mode", MessageType.None);
                    }
                }
                EditorGUILayout.PropertyField(followSceneCamera);
                EditorGUILayout.PropertyField(followTarget);
                EditorGUILayout.Space();

                //renderLayer.intValue = EditorGUILayout.Popup("Render layer", renderLayer.intValue, layerStr);
                EditorGUILayout.PropertyField(colorMap);
                EditorGUILayout.PropertyField(listenToWindZone);
                using (new EditorGUILayout.HorizontalScope())
                {
                    if (listenToWindZone.boolValue)
                    {
                        EditorGUILayout.PropertyField(windZone);

                        if (!windZone.objectReferenceValue)
                        {
                            if (GUILayout.Button("Create", GUILayout.MaxWidth(75f)))
                            {
                                GameObject obj = new GameObject();
                                obj.name = "Wind Zone";
                                WindZone wz = obj.AddComponent <WindZone>();

                                windZone.objectReferenceValue = wz;
                            }
                        }
                    }
                }
            }

            EditorGUILayout.Space();

            StylizedGrassGUI.ParameterGroup.DrawHeader(new GUIContent("Grass benders (" + StylizedGrassRenderer.benderCount + ")"));

            benderScrollPos = EditorGUILayout.BeginScrollView(benderScrollPos, StylizedGrassGUI.ParameterGroup.Section, GUILayout.MaxHeight(150f));
            {
                var prevColor   = GUI.color;
                var prevBgColor = GUI.backgroundColor;
                //var rect = EditorGUILayout.BeginHorizontal();

                int i = 0;

                foreach (KeyValuePair <int, List <GrassBender> > layer in StylizedGrassRenderer.GrassBenders)
                {
                    if (StylizedGrassRenderer.GrassBenders.Count > 1)
                    {
                        EditorGUILayout.LabelField("Layer " + layer.Key, EditorStyles.boldLabel);
                    }
                    foreach (GrassBender bender in layer.Value)
                    {
                        var rect = EditorGUILayout.BeginHorizontal();
                        GUI.color = i % 2 == 0 ? Color.white * 0.66f : Color.grey * (EditorGUIUtility.isProSkin ? 1.1f : 1.5f);

                        if (rect.Contains(Event.current.mousePosition))
                        {
                            GUI.color = Color.white * 0.75f;
                        }
                        if (Selection.activeGameObject == bender.gameObject)
                        {
                            GUI.color = Color.white * 0.8f;
                        }

                        EditorGUI.DrawRect(rect, GUI.color);

                        //GUILayout.Space(5);
                        GUI.color           = prevColor;
                        GUI.backgroundColor = prevBgColor;

                        if (bender.benderType == GrassBenderBase.BenderType.Mesh)
                        {
                            benderIcon = EditorGUIUtility.IconContent("MeshRenderer Icon").image;
                        }
                        if (bender.benderType == GrassBenderBase.BenderType.Trail)
                        {
                            benderIcon = EditorGUIUtility.IconContent("TrailRenderer Icon").image;
                        }
                        if (bender.benderType == GrassBenderBase.BenderType.ParticleSystem)
                        {
                            benderIcon = EditorGUIUtility.IconContent("ParticleSystem Icon").image;
                        }

                        if (GUILayout.Button(new GUIContent(" " + bender.name, benderIcon), EditorStyles.miniLabel, GUILayout.MaxHeight(20f)))
                        {
                            Selection.activeGameObject = bender.gameObject;
                        }

                        EditorGUILayout.EndHorizontal();

                        i++;
                    }
                }
            }
            EditorGUILayout.EndScrollView();

            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
                if (colorMap.objectReferenceValue)
                {
                    script.colorMap.SetActive();
                }
            }

            EditorGUILayout.LabelField("- Staggart Creations -", EditorStyles.centeredGreyMiniLabel);
#endif
        }