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);
 }
Exemple #2
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);
        }
Exemple #3
0
 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);
        }