public static void ConvertParticleToBender(MenuCommand cmd) { ParticleSystem ps = (ParticleSystem)cmd.context; if (!ps.gameObject.GetComponent <GrassBender>()) { GrassBender bender = ps.gameObject.AddComponent <GrassBender>(); bender.benderType = GrassBenderBase.BenderType.ParticleSystem; bender.particleSystem = ps.GetComponent <ParticleSystem>(); GrassBenderBase.ValidateParticleSystem(bender); } }
public override void OnInspectorGUI() { if (StylizedGrassRenderer.Instance == null) { EditorGUILayout.HelpBox("No Stylized Grass Renderer is active in the scene", MessageType.Warning); } serializedObject.Update(); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(benderType); if (benderType.intValue == (int)GrassBenderBase.BenderType.Mesh) { using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.PropertyField(meshRenderer); using (new EditorGUI.DisabledGroupScope(bender.meshRenderer ? bender.meshRenderer.gameObject == bender.gameObject : false)) { if (GUILayout.Button("This", EditorStyles.miniButton, GUILayout.MaxWidth(75f))) { MeshRenderer meshRend = bender.GetComponent <MeshRenderer>(); if (meshRend) { meshRenderer.objectReferenceValue = meshRend; } MeshFilter mf = bender.GetComponent <MeshFilter>(); if (mf) { bender.meshFilter = mf; } } } } EditorGUILayout.Space(); StylizedGrassGUI.ParameterGroup.DrawHeader(new GUIContent("Mesh")); using (new EditorGUILayout.VerticalScope(StylizedGrassGUI.ParameterGroup.Section)) { EditorGUILayout.PropertyField(alphaBlending); EditorGUILayout.PropertyField(scaleMultiplier); } } if (benderType.intValue == (int)GrassBenderBase.BenderType.Trail) { using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.PropertyField(trailRenderer); using (new EditorGUI.DisabledGroupScope(bender.trailRenderer ? bender.trailRenderer.gameObject == bender.gameObject : false)) { if (GUILayout.Button("This", EditorStyles.miniButton, GUILayout.MaxWidth(75f))) { TrailRenderer trailRend = bender.GetComponent <TrailRenderer>(); if (trailRend) { trailRenderer.objectReferenceValue = trailRend; } } } } EditorGUILayout.Space(); StylizedGrassGUI.ParameterGroup.DrawHeader(new GUIContent("Trail")); using (new EditorGUILayout.VerticalScope(StylizedGrassGUI.ParameterGroup.Section)) { EditorGUILayout.PropertyField(trailLifetime); EditorGUILayout.PropertyField(trailRadius); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(strengthOverLifetime); if (EditorGUI.EndChangeCheck()) { bender.strengthGradient = GrassBenderBase.GetGradient(bender.strengthOverLifetime); } EditorGUILayout.PropertyField(widthOverLifetime); } } if (benderType.intValue == (int)GrassBenderBase.BenderType.ParticleSystem) { GrassBenderBase.ValidateParticleSystem(bender); using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.PropertyField(particleSystem); using (new EditorGUI.DisabledGroupScope(bender.particleSystem ? bender.particleSystem.gameObject == bender.gameObject : false)) { if (GUILayout.Button("This", EditorStyles.miniButton, GUILayout.MaxWidth(75f))) { ParticleSystem ps = bender.GetComponent <ParticleSystem>(); if (ps) { particleSystem.objectReferenceValue = ps; } } } } EditorGUILayout.Space(); StylizedGrassGUI.ParameterGroup.DrawHeader(new GUIContent("Particle System")); using (new EditorGUILayout.VerticalScope(StylizedGrassGUI.ParameterGroup.Section)) { EditorGUILayout.PropertyField(alphaBlending); EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(strengthOverLifetime); if (EditorGUI.EndChangeCheck()) { bender.strengthGradient = GrassBenderBase.GetGradient(bender.strengthOverLifetime); } } } EditorGUILayout.Space(); StylizedGrassGUI.ParameterGroup.DrawHeader(new GUIContent("Settings")); using (new EditorGUILayout.VerticalScope(StylizedGrassGUI.ParameterGroup.Section)) { using (new EditorGUILayout.HorizontalScope()) { EditorGUILayout.PrefixLabel(new GUIContent("Sorting layer", "Higher sorting layers are drawn on top of lower layers. Use this to control which benders draw over others")); EditorGUI.BeginChangeCheck(); m_layer = GUILayout.Toolbar(m_layer, new string[] { "0", "1", "2", "3" }, GUILayout.Height(20f)); if (EditorGUI.EndChangeCheck()) { bender.SwitchLayer(m_layer); } m_layer = bender.sortingLayer; } EditorGUILayout.PropertyField(heightOffset); EditorGUILayout.PropertyField(strength); EditorGUILayout.PropertyField(pushStrength); } if (EditorGUI.EndChangeCheck()) { if (benderType.intValue != m_benderType) { bender.SwitchBenderType((GrassBenderBase.BenderType)benderType.intValue); } m_benderType = benderType.intValue; //bender.UpdateTrail(); //bender.UpdateMesh(); serializedObject.ApplyModifiedProperties(); } //base.OnInspectorGUI(); }