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; }
private void OnDisable() { StylizedGrassRenderer.UnRegisterBender(this); if (trailRenderer) { trailRenderer.emitting = false; } }
private void OnEnable() { StylizedGrassRenderer.RegisterBender(this); if (trailRenderer) { //Hide from cameras trailRenderer.forceRenderingOff = true; trailRenderer.emitting = true; } }
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); }
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)); }
public void OnEnable() { Instance = this; Init(); if (colorMap) { colorMap.SetActive(); } else { if (!GrassColorMapRenderer.Instance) { GrassColorMap.DisableGlobally(); } } #if UNITY_EDITOR UnityEditor.SceneView.duringSceneGui += OnSceneGUI; #endif }
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 }