private int ConvertConeTypeToConeEmitFrom(ShapeModuleUI.ShapeTypes shapeType) { if (shapeType == ShapeModuleUI.ShapeTypes.Cone) { return(0); } if (shapeType == ShapeModuleUI.ShapeTypes.ConeShell) { return(1); } if (shapeType == ShapeModuleUI.ShapeTypes.ConeVolume) { return(2); } return(shapeType == ShapeModuleUI.ShapeTypes.ConeVolumeShell ? 3 : 0); }
public override void OnInspectorGUI(ParticleSystem s) { if (ShapeModuleUI.s_Texts == null) { ShapeModuleUI.s_Texts = new ShapeModuleUI.Texts(); } int num = this.m_Type.intValue; int num2 = this.m_TypeToGuiTypeIndex[num]; bool usesShell = this.GetUsesShell((ShapeModuleUI.ShapeTypes)num); int num3 = ModuleUI.GUIPopup(ShapeModuleUI.s_Texts.shape, num2, this.m_GuiNames); ShapeModuleUI.ShapeTypes shapeTypes = this.m_GuiTypes[num3]; if (num3 != num2) { num = (int)shapeTypes; } switch (shapeTypes) { case ShapeModuleUI.ShapeTypes.Sphere: { ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); bool flag = ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.emitFromShell, usesShell); num = ((!flag) ? 0 : 1); break; } case ShapeModuleUI.ShapeTypes.Hemisphere: { ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); bool flag2 = ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.emitFromShell, usesShell); num = ((!flag2) ? 2 : 3); break; } case ShapeModuleUI.ShapeTypes.Cone: { ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.coneAngle, this.m_Angle); ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); bool disabled = num != 8 && num != 9; using (new EditorGUI.DisabledScope(disabled)) { ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.coneLength, this.m_Length); } string[] options = new string[] { "Base", "Base Shell", "Volume", "Volume Shell" }; int num4 = this.ConvertConeTypeToConeEmitFrom((ShapeModuleUI.ShapeTypes)num); num4 = ModuleUI.GUIPopup(ShapeModuleUI.s_Texts.emitFrom, num4, options); num = (int)this.ConvertConeEmitFromToConeType(num4); break; } case ShapeModuleUI.ShapeTypes.Box: ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.boxX, this.m_BoxX); ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.boxY, this.m_BoxY); ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.boxZ, this.m_BoxZ); break; case ShapeModuleUI.ShapeTypes.Mesh: case ShapeModuleUI.ShapeTypes.MeshRenderer: case ShapeModuleUI.ShapeTypes.SkinnedMeshRenderer: { string[] options2 = new string[] { "Vertex", "Edge", "Triangle" }; ModuleUI.GUIPopup(string.Empty, this.m_PlacementMode, options2); Material material = null; Mesh mesh = null; if (shapeTypes == ShapeModuleUI.ShapeTypes.Mesh) { ModuleUI.GUIObject(ShapeModuleUI.s_Texts.mesh, this.m_Mesh); } else if (shapeTypes == ShapeModuleUI.ShapeTypes.MeshRenderer) { ModuleUI.GUIObject(ShapeModuleUI.s_Texts.meshRenderer, this.m_MeshRenderer); MeshRenderer meshRenderer = (MeshRenderer)this.m_MeshRenderer.objectReferenceValue; if (meshRenderer) { material = meshRenderer.sharedMaterial; if (meshRenderer.GetComponent <MeshFilter>()) { mesh = meshRenderer.GetComponent <MeshFilter>().sharedMesh; } } } else { ModuleUI.GUIObject(ShapeModuleUI.s_Texts.skinnedMeshRenderer, this.m_SkinnedMeshRenderer); SkinnedMeshRenderer skinnedMeshRenderer = (SkinnedMeshRenderer)this.m_SkinnedMeshRenderer.objectReferenceValue; if (skinnedMeshRenderer) { material = skinnedMeshRenderer.sharedMaterial; mesh = skinnedMeshRenderer.sharedMesh; } } ModuleUI.GUIToggleWithIntField(ShapeModuleUI.s_Texts.meshMaterialIndex, this.m_UseMeshMaterialIndex, this.m_MeshMaterialIndex, false); bool flag3 = ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.useMeshColors, this.m_UseMeshColors); if (flag3 && material != null && mesh != null) { int nameID = Shader.PropertyToID("_Color"); int nameID2 = Shader.PropertyToID("_TintColor"); if (!material.HasProperty(nameID) && !material.HasProperty(nameID2) && !mesh.HasChannel(Mesh.InternalShaderChannel.Color)) { GUIContent gUIContent = EditorGUIUtility.TextContent("To use mesh colors, your source mesh must either provide vertex colors, or its shader must contain a color property named \"_Color\" or \"_TintColor\"."); EditorGUILayout.HelpBox(gUIContent.text, MessageType.Warning, true); } } ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.meshNormalOffset, this.m_MeshNormalOffset); break; } case ShapeModuleUI.ShapeTypes.Circle: { ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.arc, this.m_Arc); bool flag4 = ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.emitFromEdge, usesShell); num = ((!flag4) ? 10 : 11); break; } case ShapeModuleUI.ShapeTypes.SingleSidedEdge: ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); break; } this.m_Type.intValue = num; ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.randomDirection, this.m_RandomDirection); }
private bool GetUsesShell(ShapeModuleUI.ShapeTypes shapeType) { return(shapeType == ShapeModuleUI.ShapeTypes.HemisphereShell || shapeType == ShapeModuleUI.ShapeTypes.SphereShell || shapeType == ShapeModuleUI.ShapeTypes.ConeShell || shapeType == ShapeModuleUI.ShapeTypes.ConeVolumeShell || shapeType == ShapeModuleUI.ShapeTypes.CircleEdge); }
private bool GetUsesShell(ShapeModuleUI.ShapeTypes shapeType) { return(Array.IndexOf <ShapeModuleUI.ShapeTypes>(this.shellShapes, shapeType) != -1); }
private int ConvertBoxTypeToConeEmitFrom(ShapeModuleUI.ShapeTypes shapeType) { return(Array.IndexOf <ShapeModuleUI.ShapeTypes>(this.boxShapes, shapeType)); }
public override void OnInspectorGUI(ParticleSystem s) { if (ShapeModuleUI.s_Texts == null) { ShapeModuleUI.s_Texts = new ShapeModuleUI.Texts(); } int num = this.m_Type.intValue; int num2 = this.m_TypeToGuiTypeIndex[num]; bool usesShell = this.GetUsesShell((ShapeModuleUI.ShapeTypes)num); int num3 = ModuleUI.GUIPopup(ShapeModuleUI.s_Texts.shape, num2, this.m_GuiNames); ShapeModuleUI.ShapeTypes shapeTypes = this.m_GuiTypes[num3]; if (num3 != num2) { num = (int)shapeTypes; } switch (shapeTypes) { case ShapeModuleUI.ShapeTypes.Sphere: { ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); bool flag = ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.emitFromShell, usesShell); num = ((!flag) ? 0 : 1); break; } case ShapeModuleUI.ShapeTypes.Hemisphere: { ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); bool flag2 = ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.emitFromShell, usesShell); num = ((!flag2) ? 2 : 3); break; } case ShapeModuleUI.ShapeTypes.Cone: { ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.coneAngle, this.m_Angle); ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); bool disabled = num != 8 && num != 9; EditorGUI.BeginDisabledGroup(disabled); ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.coneLength, this.m_Length); EditorGUI.EndDisabledGroup(); string[] options = new string[] { "Base", "Base Shell", "Volume", "Volume Shell" }; int num4 = this.ConvertConeTypeToConeEmitFrom((ShapeModuleUI.ShapeTypes)num); num4 = ModuleUI.GUIPopup(ShapeModuleUI.s_Texts.emitFrom, num4, options); num = (int)this.ConvertConeEmitFromToConeType(num4); break; } case ShapeModuleUI.ShapeTypes.Box: ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.boxX, this.m_BoxX); ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.boxY, this.m_BoxY); ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.boxZ, this.m_BoxZ); break; case ShapeModuleUI.ShapeTypes.Mesh: case ShapeModuleUI.ShapeTypes.MeshRenderer: case ShapeModuleUI.ShapeTypes.SkinnedMeshRenderer: { string[] options2 = new string[] { "Vertex", "Edge", "Triangle" }; ModuleUI.GUIPopup(string.Empty, this.m_PlacementMode, options2); if (shapeTypes == ShapeModuleUI.ShapeTypes.Mesh) { ModuleUI.GUIObject(ShapeModuleUI.s_Texts.mesh, this.m_Mesh); } else if (shapeTypes == ShapeModuleUI.ShapeTypes.MeshRenderer) { ModuleUI.GUIObject(ShapeModuleUI.s_Texts.meshRenderer, this.m_MeshRenderer); } else { ModuleUI.GUIObject(ShapeModuleUI.s_Texts.skinnedMeshRenderer, this.m_SkinnedMeshRenderer); } ModuleUI.GUIToggleWithIntField(ShapeModuleUI.s_Texts.meshMaterialIndex, this.m_UseMeshMaterialIndex, this.m_MeshMaterialIndex, false); ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.useMeshColors, this.m_UseMeshColors); ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.meshNormalOffset, this.m_MeshNormalOffset); break; } case ShapeModuleUI.ShapeTypes.Circle: { ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.arc, this.m_Arc); bool flag3 = ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.emitFromEdge, usesShell); num = ((!flag3) ? 10 : 11); break; } case ShapeModuleUI.ShapeTypes.SingleSidedEdge: ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); break; } this.m_Type.intValue = num; ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.randomDirection, this.m_RandomDirection); }
public override void OnInspectorGUI(ParticleSystem s) { if (ShapeModuleUI.s_Texts == null) { ShapeModuleUI.s_Texts = new ShapeModuleUI.Texts(); } int index1 = this.m_Type.intValue; int intValue = this.m_TypeToGuiTypeIndex[index1]; bool usesShell = this.GetUsesShell((ShapeModuleUI.ShapeTypes)index1); int index2 = ModuleUI.GUIPopup(ShapeModuleUI.s_Texts.shape, intValue, this.m_GuiNames); ShapeModuleUI.ShapeTypes guiType = this.m_GuiTypes[index2]; if (index2 != intValue) { index1 = (int)guiType; } switch (guiType) { case ShapeModuleUI.ShapeTypes.Sphere: double num1 = (double)ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); index1 = !ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.emitFromShell, usesShell) ? 0 : 1; break; case ShapeModuleUI.ShapeTypes.Hemisphere: double num2 = (double)ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); index1 = !ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.emitFromShell, usesShell) ? 2 : 3; break; case ShapeModuleUI.ShapeTypes.Cone: double num3 = (double)ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.coneAngle, this.m_Angle); double num4 = (double)ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); EditorGUI.BeginDisabledGroup((index1 == 8 ? 1 : (index1 == 9 ? 1 : 0)) == 0); double num5 = (double)ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.coneLength, this.m_Length); EditorGUI.EndDisabledGroup(); string[] options1 = new string[4] { "Base", "Base Shell", "Volume", "Volume Shell" }; int coneEmitFrom = this.ConvertConeTypeToConeEmitFrom((ShapeModuleUI.ShapeTypes)index1); index1 = (int)this.ConvertConeEmitFromToConeType(ModuleUI.GUIPopup(ShapeModuleUI.s_Texts.emitFrom, coneEmitFrom, options1)); break; case ShapeModuleUI.ShapeTypes.Box: double num6 = (double)ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.boxX, this.m_BoxX); double num7 = (double)ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.boxY, this.m_BoxY); double num8 = (double)ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.boxZ, this.m_BoxZ); break; case ShapeModuleUI.ShapeTypes.Mesh: case ShapeModuleUI.ShapeTypes.MeshRenderer: case ShapeModuleUI.ShapeTypes.SkinnedMeshRenderer: string[] options2 = new string[3] { "Vertex", "Edge", "Triangle" }; ModuleUI.GUIPopup(string.Empty, this.m_PlacementMode, options2); if (guiType == ShapeModuleUI.ShapeTypes.Mesh) { ModuleUI.GUIObject(ShapeModuleUI.s_Texts.mesh, this.m_Mesh); } else if (guiType == ShapeModuleUI.ShapeTypes.MeshRenderer) { ModuleUI.GUIObject(ShapeModuleUI.s_Texts.meshRenderer, this.m_MeshRenderer); } else { ModuleUI.GUIObject(ShapeModuleUI.s_Texts.skinnedMeshRenderer, this.m_SkinnedMeshRenderer); } ModuleUI.GUIToggleWithIntField(ShapeModuleUI.s_Texts.meshMaterialIndex, this.m_UseMeshMaterialIndex, this.m_MeshMaterialIndex, false); ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.useMeshColors, this.m_UseMeshColors); double num9 = (double)ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.meshNormalOffset, this.m_MeshNormalOffset); break; case ShapeModuleUI.ShapeTypes.Circle: double num10 = (double)ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); double num11 = (double)ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.arc, this.m_Arc); index1 = !ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.emitFromEdge, usesShell) ? 10 : 11; break; case ShapeModuleUI.ShapeTypes.SingleSidedEdge: double num12 = (double)ModuleUI.GUIFloat(ShapeModuleUI.s_Texts.radius, this.m_Radius); break; } this.m_Type.intValue = index1; ModuleUI.GUIToggle(ShapeModuleUI.s_Texts.randomDirection, this.m_RandomDirection); }