Custom Inspector Enum

Right now im having problems with my Editor code. Essentially, im trying to make a custom editor which displays multiple different variables in the inspector based off of which enum i have selected. My problem comes in when i try to have 2 different enums. for some reason, the custom editor takes the wrong index value.

So for example, if i select Normal in the top enum, all the normal elements are displayed for both enums. If i select Charge in the top enum (number 2 in list) it also displays every element for the second enums number 2 in list.

To simplify, only the upper one works, and is also determining to display the elements for the lower enum too.

Any Help would be very appreciated!
Cheers

//Gaffa

using UnityEditor;
using UnityEngine;

[CustomEditor(typeof(Bullet)), CanEditMultipleObjects]
public class BulletEditor : Editor {

	public SerializedProperty
		bulletType_Prop, //enum 1
		bulletWaitTime_Prop, //elements of enum1
		bulletDamageChargeMultiplier_Prop, //elements of enum1
		bulletInpact_Prop, //enum 2
		explosionRange_Prop, //elements of enum2
		explosionDamage_Prop, //elements of enum2
		bounceSpeedFallof_Prop; //elements of enum2

	void OnEnable()
	{
		bulletType_Prop = serializedObject.FindProperty ("bulletType");
		bulletWaitTime_Prop = serializedObject.FindProperty ("bulletWaitTime");
		bulletDamageChargeMultiplier_Prop = serializedObject.FindProperty ("bulletDamageChargeMultiplier");
		bulletInpact_Prop = serializedObject.FindProperty ("bulletInpact");
		explosionRange_Prop = serializedObject.FindProperty ("explosionRange");
		explosionDamage_Prop = serializedObject.FindProperty ("explosionDamage");
		bounceSpeedFallof_Prop = serializedObject.FindProperty ("bounceSpeedFallof");
	}

	public override void OnInspectorGUI()
	{
		serializedObject.Update();

		EditorGUILayout.PropertyField (bulletType_Prop);

		Bullet.BulletTypes bTypes = (Bullet.BulletTypes)bulletType_Prop.enumValueIndex;

		switch(bTypes)
		{
		case Bullet.BulletTypes.normal:
			break;

		case Bullet.BulletTypes.charge:
			//om typen är charge visa bullet charge multiplier
			EditorGUILayout.Slider(bulletDamageChargeMultiplier_Prop, 0.1f, 10f, new GUIContent("bulletDamageChargeMultiplier"));
			break;
			
		case Bullet.BulletTypes.wait:
			//om typen är wait, visa bullet wait time
			EditorGUILayout.Slider(bulletWaitTime_Prop, 0f, 10f, new GUIContent("bulletWaitTime"));
			break;
		}

		serializedObject.ApplyModifiedProperties ();

		EditorGUILayout.PropertyField (bulletInpact_Prop);
		Bullet.BulletInpact bInpact = (Bullet.BulletInpact)bulletType_Prop.enumValueIndex;

		switch(bInpact)
		{
		case Bullet.BulletInpact.normal:
			break;

		case Bullet.BulletInpact.explosion:
			EditorGUILayout.Slider(explosionRange_Prop, 0f, 100f, new GUIContent("explosionRange"));
			EditorGUILayout.Slider(explosionDamage_Prop, 0f, 100f, new GUIContent("explosionDamage"));
			break;
		
		case Bullet.BulletInpact.bounce:
			EditorGUILayout.Slider(bounceSpeedFallof_Prop, 0f, 2f, new GUIContent("bounceSpeedFallof"));
			break;

		}

		serializedObject.ApplyModifiedProperties ();

		DrawDefaultInspector();
	}
}

both bTypes and bInpact get the same value.

Bullet.BulletTypes bTypes = (Bullet.BulletTypes)bulletType_Prop.enumValueIndex;
Bullet.BulletInpact bInpact = (Bullet.BulletInpact)bulletType_Prop.enumValueIndex;

so there is no reason for them to be different.

looks like you wanted this

Bullet.BulletInpact bInpact = (Bullet.BulletInpact)bulletInpact_Prop .enumValueIndex;