public override void OnInspectorGUI() { RenderEffect renderEffect = target as RenderEffect; ParticleSystem particleSystem = renderEffect.gameObject.GetComponent <ParticleSystem>(); EditorGUILayout.BeginVertical(); if (particleSystem == null) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Open BillBoardOption"); renderEffect.m_EnableBillBoard = EditorGUILayout.Toggle(renderEffect.m_EnableBillBoard); EditorGUILayout.EndHorizontal(); if (renderEffect.m_EnableBillBoard) { EditorGUI.indentLevel++; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("BillBoard Type"); renderEffect.m_BillBoardType = (RenderBillBoardType)EditorGUILayout.EnumPopup(renderEffect.m_BillBoardType); EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel--; } } if (particleSystem == null) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Open Sort Layer Option"); renderEffect.m_EnableSetSortLayer = EditorGUILayout.Toggle(renderEffect.m_EnableSetSortLayer); EditorGUILayout.EndHorizontal(); if (renderEffect.m_EnableSetSortLayer) { EditorGUI.indentLevel++; EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Sorting Layer"); renderEffect.m_SortingLayerID = EditorGUILayout.IntPopup(renderEffect.m_SortingLayerID, m_LayerName, m_LayerID); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Sorting Order"); renderEffect.m_SortingOrder = EditorGUILayout.IntField(renderEffect.m_SortingOrder); EditorGUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { renderEffect.UpdateRenderLayer(); } EditorGUI.indentLevel--; } } Renderer render = renderEffect.gameObject.GetComponent <Renderer>(); if (render != null) { if (GUILayout.Button("Refresh Material")) { renderEffect.RefreshMaterial(); } EditorGUILayout.LabelField("Materials"); } EditorGUI.indentLevel++; int index = 0; foreach (MaterialEffect matEffect in renderEffect.m_MaterialEffects) { string strIndex = "Element:" + index + " "; if (matEffect.m_EffectMaterial == null) { GUILayout.Button(strIndex + "Material Not Assign"); index++; continue; } else { if (GUILayout.Button(strIndex + matEffect.m_EffectMaterial.name)) { matEffect.m_EditorExtend = !matEffect.m_EditorExtend; } index++; if (matEffect.m_EditorExtend) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Main Texture WrapMode"); matEffect.m_MainTexWrapMode = (TextureWrapMode)EditorGUILayout.EnumPopup(matEffect.m_MainTexWrapMode); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Cutoff Texture WrapMode"); matEffect.m_MaskTexWrapMode = (TextureWrapMode)EditorGUILayout.EnumPopup(matEffect.m_MaskTexWrapMode); EditorGUILayout.EndHorizontal(); } } } EditorGUI.indentLevel--; if (render != null && particleSystem == null) { EditorGUI.indentLevel++; EditorGUILayout.LabelField("Switch Render Type"); if (render.GetType() != typeof(LineRenderer)) { if (GUILayout.Button("Switch To Line Render")) { LineRenderer lineRender = renderEffect.gameObject.AddComponent <LineRenderer>(); renderEffect.m_Render = lineRender; lineRender.sharedMaterials = render.sharedMaterials; UnityEngine.Object.DestroyImmediate(render); MeshFilter meshFilter = renderEffect.gameObject.GetComponent <MeshFilter>(); if (meshFilter != null) { UnityEngine.Object.DestroyImmediate(meshFilter); } Collider meshCollider = renderEffect.gameObject.GetComponent <Collider>(); if (meshCollider != null) { UnityEngine.Object.DestroyImmediate(meshCollider); } EditorGUIUtility.ExitGUI(); } } if (render.GetType() != typeof(MeshRenderer)) { if (GUILayout.Button("Switch To Mesh Render")) { MeshRenderer lineRender = renderEffect.gameObject.AddComponent <MeshRenderer>(); lineRender.sharedMaterials = render.sharedMaterials; renderEffect.m_Render = lineRender; UnityEngine.Object.DestroyImmediate(render); MeshFilter meshFilter = renderEffect.gameObject.GetComponent <MeshFilter>(); if (meshFilter == null) { renderEffect.gameObject.AddComponent <MeshFilter>(); } Collider Collider = renderEffect.gameObject.GetComponent <Collider>(); if (Collider != null) { UnityEngine.Object.DestroyImmediate(Collider); } MeshCollider meshCollider = renderEffect.gameObject.GetComponent <MeshCollider>(); if (meshCollider == null) { renderEffect.gameObject.AddComponent <MeshCollider>(); } EditorGUIUtility.ExitGUI(); } } if (render.GetType() != typeof(TrailRenderer)) { if (GUILayout.Button("Switch To Trail Render")) { TrailRenderer lineRender = renderEffect.gameObject.AddComponent <TrailRenderer>(); lineRender.sharedMaterials = render.sharedMaterials; renderEffect.m_Render = lineRender; UnityEngine.Object.DestroyImmediate(render); MeshFilter meshFilter = renderEffect.gameObject.GetComponent <MeshFilter>(); if (meshFilter != null) { UnityEngine.Object.DestroyImmediate(meshFilter); } Collider Collider = renderEffect.gameObject.GetComponent <Collider>(); if (Collider != null) { UnityEngine.Object.DestroyImmediate(Collider); } EditorGUIUtility.ExitGUI(); } } if (render.GetType() == typeof(TrailRenderer)) { if (GUILayout.Button("Clear Trail")) { TrailRenderer trailRender = render.GetComponent <TrailRenderer> (); trailRender.Clear(); } } EditorGUI.indentLevel--; } EditorGUILayout.EndVertical(); }
public override void OnInspectorGUI() { bool bShowAll = false; bool bHideAll = false; EffectController effectCtrl = target as EffectController; EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); EditorGUI.BeginDisabledGroup(effectCtrl.m_bLockNums); effectCtrl.m_nNumOfEffects = EditorGUILayout.IntField("Effect Count", effectCtrl.m_nNumOfEffects); EditorGUI.EndDisabledGroup(); effectCtrl.m_bLockNums = EditorGUILayout.Toggle(effectCtrl.m_bLockNums); if (GUILayout.Button("One Click Expansion")) { bShowAll = true; } else { bShowAll = false; } if (GUILayout.Button("One Click Close")) { bHideAll = true; } else { bHideAll = false; } EditorGUILayout.EndHorizontal(); int nCnt = 0; for (; nCnt < effectCtrl.m_nNumOfEffects; nCnt++) { if (nCnt >= effectCtrl.m_kEffectGenList.Count) { effectCtrl.m_kEffectGenList.Add(new EffectData()); } EffectData effectData = effectCtrl.m_kEffectGenList [nCnt]; if (effectData == null) { continue; } if (bShowAll) { effectData.m_bFoldoutOpen = true; } if (bHideAll) { effectData.m_bFoldoutOpen = false; } effectData.m_bFoldoutOpen = EditorGUILayout.Foldout(effectData.m_bFoldoutOpen, ("Effect " + nCnt + " Setting")); if (effectData.m_bFoldoutOpen) { effectData.m_fTimeSec = EditorGUILayout.FloatField("Shot Time", effectData.m_fTimeSec); effectData.m_goEffect = EditorGUILayout.ObjectField("Obj", effectData.m_goEffect, typeof(GameObject), true) as GameObject; EditorGUI.indentLevel++; /// Transform panel. effectData.m_bTransformFoldout = EditorGUILayout.Foldout(effectData.m_bTransformFoldout, "Transform"); if (effectData.m_bTransformFoldout) { EditorGUI.indentLevel++; EditorGUI.BeginChangeCheck(); GUILayout.BeginHorizontal(); if (GUILayout.Button("P", GUILayout.Width(25), GUILayout.ExpandWidth(false))) { effectData.m_goPos = new Vector3(0, 0, 0); } effectData.m_goPos = EditorGUILayout.Vector3Field("", effectData.m_goPos); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button("R", GUILayout.Width(25), GUILayout.ExpandWidth(false))) { effectData.m_goRotation = new Vector3(0, 0, 0); } effectData.m_goRotation = EditorGUILayout.Vector3Field("", effectData.m_goRotation); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); if (GUILayout.Button("S", GUILayout.Width(25), GUILayout.ExpandWidth(false))) { effectData.m_goScale = new Vector3(0, 0, 0); } effectData.m_goScale = EditorGUILayout.Vector3Field("", effectData.m_goScale); GUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { effectCtrl.UpdateEffectTransformByIndex(nCnt); } EditorGUI.indentLevel--; } ParticleSystem particleSystem = effectCtrl.CheckHasParticleSystem(nCnt); RenderEffect renderEffect = effectCtrl.CheckHasRenderEffectScript(nCnt); if (particleSystem == null) { effectData.m_bSortingFoldout = EditorGUILayout.Foldout(effectData.m_bSortingFoldout, "Sorting Layer"); /// Sorting panel. if (effectData.m_bSortingFoldout) { EditorGUI.indentLevel++; EditorGUI.BeginChangeCheck(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Sorting Layer"); effectData.m_SortingLayerID = EditorGUILayout.IntPopup(effectData.m_SortingLayerID, m_LayerName, m_LayerID); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Sorting Order"); effectData.m_SortingOrder = EditorGUILayout.IntField(effectData.m_SortingOrder); EditorGUILayout.EndHorizontal(); if (EditorGUI.EndChangeCheck()) { if (renderEffect != null) { renderEffect.m_SortingLayerID = effectData.m_SortingLayerID; renderEffect.m_SortingOrder = effectData.m_SortingOrder; renderEffect.m_EnableSetSortLayer = true; renderEffect.UpdateRenderLayer(); } else { effectCtrl.UPdateRenderLayerByIndex(nCnt); } } EditorGUI.indentLevel--; } } EditorGUI.indentLevel--; } if (nCnt != effectCtrl.m_nNumOfEffects - 1) { EditorGUILayout.LabelField("", GUILayout.Height(2)); GUILayout.Box("", GUILayout.ExpandWidth(true), GUILayout.Height(1)); EditorGUILayout.LabelField("", GUILayout.Height(2)); } } for (; nCnt < effectCtrl.m_kEffectGenList.Count; nCnt++) { effectCtrl.m_kEffectGenList.RemoveAt(nCnt); } EditorGUILayout.EndVertical(); }