public override void OnInspectorGUI()
        {
            serializedObject.Update();
            EditorGUILayout.BeginVertical(MalbersEditor.StyleBlue);
            EditorGUILayout.HelpBox("The Combat Mode is managed here", MessageType.None);
            EditorGUILayout.EndVertical();

            EditorGUI.BeginChangeCheck();
            EditorGUILayout.BeginVertical(MalbersEditor.StyleGray);
            {
                EditorGUI.BeginDisabledGroup(true);
                script = (MonoScript)EditorGUILayout.ObjectField("Script", script, typeof(MonoScript), false);
                EditorGUI.EndDisabledGroup();

                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                {
                    EditorGUILayout.PropertyField(HitMask, new GUIContent("Hit Mask", "What to Hit"));
                    M.Target = (Transform)EditorGUILayout.ObjectField(new GUIContent("Target", "If the Rider has a Target"), M.Target, typeof(Transform), true);
                    M.AimDot = (RectTransform)EditorGUILayout.ObjectField(new GUIContent("Aim Dot", "UI for Aiming"), M.AimDot, typeof(RectTransform), true);

                    M.StrafeOnTarget = EditorGUILayout.Toggle(new GUIContent("Strafe on Target", "If is there a Target change the mount Input to Camera Input "), M.StrafeOnTarget);
                }
                EditorGUILayout.EndVertical();


                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                {
                    EditorGUI.indentLevel++;
                    M.Editor_ShowEquipPoints = EditorGUILayout.Foldout(M.Editor_ShowEquipPoints, "Weapon Equip Points");

                    if (M.Editor_ShowEquipPoints)
                    {
                        M.LeftHandEquipPoint  = (Transform)EditorGUILayout.ObjectField("Left Hand", M.LeftHandEquipPoint, typeof(Transform), true);
                        M.RightHandEquipPoint = (Transform)EditorGUILayout.ObjectField("Right Hand", M.RightHandEquipPoint, typeof(Transform), true);
                    }

                    Animator rideranimator = M.GetComponent <Animator>();
                    if (rideranimator)
                    {
                        if (!M.LeftHandEquipPoint)
                        {
                            M.LeftHandEquipPoint = rideranimator.GetBoneTransform(HumanBodyBones.LeftHand);
                        }

                        if (!M.RightHandEquipPoint)
                        {
                            M.RightHandEquipPoint = rideranimator.GetBoneTransform(HumanBodyBones.RightHand);
                        }
                    }
                    EditorGUI.indentLevel--;
                }
                EditorGUILayout.EndVertical();


                //INPUTS
                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                {
                    EditorGUI.indentLevel++;
                    M.Editor_ShowInputs = EditorGUILayout.Foldout(M.Editor_ShowInputs, "Inputs");

                    if (M.Editor_ShowInputs)
                    {
                        EditorGUILayout.PropertyField(InputAttack1, new GUIContent("Attack1", "Attack Right Side "));
                        MalbersInputEditor.DrawInputEvents(InputAttack1, InputAttack1.FindPropertyRelative("ShowEvents").boolValue);

                        EditorGUILayout.PropertyField(InputAttack2, new GUIContent("Attack2", "Attack Left Side "));
                        MalbersInputEditor.DrawInputEvents(InputAttack2, InputAttack2.FindPropertyRelative("ShowEvents").boolValue);

                        EditorGUILayout.PropertyField(InputAim, new GUIContent("Aim Mode", "Enable Aim mode for Ranged Weapons"));
                        MalbersInputEditor.DrawInputEvents(InputAim, InputAim.FindPropertyRelative("ShowEvents").boolValue);

                        EditorGUILayout.PropertyField(Reload, new GUIContent("Reload", "To Reload Guns"));
                        MalbersInputEditor.DrawInputEvents(Reload, Reload.FindPropertyRelative("ShowEvents").boolValue);
                    }
                    EditorGUI.indentLevel--;
                }

                EditorGUILayout.EndVertical();
                EditorGUI.BeginChangeCheck();

                EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                M.ActiveHolderSide = (WeaponHolder)EditorGUILayout.EnumPopup(new GUIContent("Active Holder Side", "Holder to draw weapons from, When weapons dont have specific holder"), M.ActiveHolderSide);
                EditorGUILayout.EndVertical();

                if (EditorGUI.EndChangeCheck())
                {
                    M.SetActiveHolder(M.ActiveHolderSide);
                }
                EditorGUI.indentLevel++;

                ///──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
                //Inventory and Holders
                EditorGUILayout.BeginHorizontal();

                M.UseInventory = GUILayout.Toggle(M.UseInventory, new GUIContent("Use Inventory", "Get the Weapons from an Inventory"), EditorStyles.toolbarButton);

                if (M.UseInventory)
                {
                    M.UseHolders = false;
                }
                else
                {
                    M.UseHolders = true;
                }


                M.UseHolders = GUILayout.Toggle(M.UseHolders, new GUIContent("Use Holders", "The Weapons are child of the Holders Transform"), EditorStyles.toolbarButton);

                if (M.UseHolders)
                {
                    M.UseInventory = false;
                }
                else
                {
                    M.UseInventory = true;
                }

                EditorGUILayout.EndHorizontal();
                EditorGUI.indentLevel--;

                if (M.UseInventory)
                {
                    EditorGUILayout.BeginVertical(MalbersEditor.StyleGreen);
                    EditorGUILayout.HelpBox("The weapons gameobjects are received by the method 'SetWeaponByInventory(GameObject)'", MessageType.None);
                    EditorGUILayout.EndVertical();
                    EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                    M.AlreadyInstantiated = EditorGUILayout.ToggleLeft(new GUIContent("Already Instantiated", "The weapon is already instantiated before entering 'GetWeaponByInventory'"), M.AlreadyInstantiated);
                    EditorGUILayout.EndVertical();

                    //if (MyRiderCombat.GetComponent<MInventory>())
                    //{
                    //    MyRiderCombat.GetComponent<MInventory>().enabled = true;
                    //}
                }

                //Holder Stufss
                if (M.UseHolders)
                {
                    EditorGUILayout.BeginVertical(MalbersEditor.StyleGreen);
                    EditorGUILayout.HelpBox("The weapons are child of the Holders", MessageType.None);
                    EditorGUILayout.EndVertical();

                    EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                    {
                        EditorGUI.indentLevel++;

                        M.Editor_ShowHolders = EditorGUILayout.Foldout(M.Editor_ShowHolders, "Holders");
                        if (M.Editor_ShowHolders)
                        {
                            EditorGUILayout.PropertyField(HolderLeft, new GUIContent("Holder Left", "The Tranform that has the weapons on the Left  Side"));
                            EditorGUILayout.PropertyField(HolderRight, new GUIContent("Holder Right", "The Tranform that has the weapons on the Right Side"));
                            EditorGUILayout.PropertyField(HolderBack, new GUIContent("Holder Back", "The Tranform that has the weapons on the Back  Side"));

                            M.Editor_ShowHoldersInput = GUILayout.Toggle(M.Editor_ShowHoldersInput, "Holders Input", EditorStyles.toolbarButton);
                            {
                                if (M.Editor_ShowHoldersInput)
                                {
                                    EditorGUILayout.PropertyField(InputWeapon, new GUIContent("Input Weapon", "Draw/Store the Last Weapon"));
                                    MalbersInputEditor.DrawInputEvents(InputWeapon, InputWeapon.FindPropertyRelative("ShowEvents").boolValue);

                                    EditorGUILayout.PropertyField(HLeft, new GUIContent("Left", "Input to get Weapons from the Left Holder"));
                                    MalbersInputEditor.DrawInputEvents(HLeft, HLeft.FindPropertyRelative("ShowEvents").boolValue);

                                    EditorGUILayout.PropertyField(HRight, new GUIContent("Right", "Input to get Weapons from the Right Holder"));
                                    MalbersInputEditor.DrawInputEvents(HRight, HRight.FindPropertyRelative("ShowEvents").boolValue);

                                    EditorGUILayout.PropertyField(HBack, new GUIContent("Back", "Input to get Weapons from the Back Holder"));
                                    MalbersInputEditor.DrawInputEvents(HBack, HBack.FindPropertyRelative("ShowEvents").boolValue);
                                }
                            }
                        }

                        EditorGUI.indentLevel--;
                    }
                    EditorGUILayout.EndVertical();

                    if (M.GetComponent <MInventory>())
                    {
                        M.GetComponent <MInventory>().enabled = false;
                    }
                }
            }

            EditorGUILayout.BeginVertical(EditorStyles.helpBox);
            EditorGUI.indentLevel++;
            EditorGUILayout.PropertyField(CombatAbilities, new GUIContent("Rider Combat Abilities", ""), true);
            EditorGUI.indentLevel--;
            EditorGUILayout.EndVertical();


            EditorGUILayout.BeginVertical(EditorStyles.helpBox);
            EditorGUI.indentLevel++;
            M.Editor_ShowAbilities = EditorGUILayout.Foldout(M.Editor_ShowAbilities, "Abilities Properties");
            EditorGUI.indentLevel--;

            if (M.Editor_ShowAbilities)
            {
                if (M.CombatAbilities != null)
                {
                    foreach (var combatAbility in M.CombatAbilities)
                    {
                        if (combatAbility != null)
                        {
                            EditorGUILayout.BeginVertical(EditorStyles.helpBox);
                            EditorGUILayout.LabelField(combatAbility.name, EditorStyles.toolbarButton);
                            //EditorGUILayout.Separator();
                            DrawAbility(combatAbility);
                            EditorGUILayout.EndVertical();
                        }
                    }
                }
            }
            EditorGUILayout.EndVertical();

            EditorGUI.indentLevel++;
            DrawEvents();

            EditorGUILayout.PropertyField(debug, new GUIContent("Debug", ""));

            Animator anim = M.GetComponent <Animator>();

            UnityEditor.Animations.AnimatorController controller = null;
            if (anim)
            {
                controller = (UnityEditor.Animations.AnimatorController)anim.runtimeAnimatorController;
            }

            if (controller)
            {
                List <UnityEditor.Animations.AnimatorControllerLayer> layers = controller.layers.ToList();

                if (layers.Find(layer => layer.name == "Mounted") == null)
                //if (anim.GetLayerIndex("Mounted") == -1)
                {
                    EditorGUILayout.HelpBox("No Mounted Layer Found, Add it the Mounted Layer using the Rider 3rd Person Script", MessageType.Warning);
                }
                else
                {
                    if (layers.Find(layer => layer.name == "Rider Combat") == null)
                    //if (anim.GetLayerIndex("Rider Combat") == -1)
                    {
                        if (GUILayout.Button(new GUIContent("Add Rider Combat Layers", "Used for adding the parameters and Layer from the Mounted Animator to your custom character controller animator ")))
                        {
                            AddLayerMountedCombat(controller);
                        }
                    }
                }
            }
            EditorGUILayout.EndVertical();

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(target, "Rider Combat Change");
            }

            EditorUtility.SetDirty(target);
            serializedObject.ApplyModifiedProperties();
        }
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            MalbersEditor.DrawDescription("The Combat while Riding is controlled here");

            EditorGUI.BeginChangeCheck();
            {
                EditorGUILayout.BeginVertical(MalbersEditor.StyleGray);
                {
                    MalbersEditor.DrawScript(script);


                    Editor_Tabs1.intValue = GUILayout.Toolbar(Editor_Tabs1.intValue, new string[] { "General", "Holders", "Abilities" /*,"References" */ });

                    if (Editor_Tabs1.intValue != 4)
                    {
                        Editor_Tabs2.intValue = 4;
                    }

                    Editor_Tabs2.intValue = GUILayout.Toolbar(Editor_Tabs2.intValue, new string[] { "Advanced", "Animator", "Events", "Debug" });

                    if (Editor_Tabs2.intValue != 4)
                    {
                        Editor_Tabs1.intValue = 4;
                    }

                    //First Tabs
                    int Selection = Editor_Tabs1.intValue;

                    if (Selection == 0)
                    {
                        DrawGeneral();
                    }
                    else if (Selection == 1)
                    {
                        ShowHolders();
                    }
                    else if (Selection == 2)
                    {
                        ShowAbilities();
                    }
                    //  else if (Selection == 1) DrawReferences();


                    //2nd Tabs
                    Selection = Editor_Tabs2.intValue;

                    if (Selection == 0)
                    {
                        DrawAdvanced();
                    }
                    else if (Selection == 1)
                    {
                        DrawAnimator();
                    }
                    else if (Selection == 2)
                    {
                        DrawEvents();
                    }
                    else if (Selection == 3)
                    {
                        DrawDebug();
                    }
                }


                Animator anim = M.GetComponent <Animator>();

                UnityEditor.Animations.AnimatorController controller = null;
                if (anim)
                {
                    controller = (UnityEditor.Animations.AnimatorController)anim.runtimeAnimatorController;
                }

                if (controller)
                {
                    List <UnityEditor.Animations.AnimatorControllerLayer> layers = controller.layers.ToList();

                    if (layers.Find(layer => layer.name == "Mounted") == null)
                    {
                        EditorGUILayout.HelpBox("No Mounted Layer Found, Add it the Mounted Layer using the Rider 3rd Person Script", MessageType.Warning);
                    }
                    else
                    {
                        if (layers.Find(layer => layer.name == M.CombatLayerName) == null)
                        //if (anim.GetLayerIndex("Rider Combat") == -1)
                        {
                            if (GUILayout.Button(new GUIContent("Add Rider Combat Layers", "Used for adding the parameters and Layer from the Mounted Animator to your custom character controller animator ")))
                            {
                                AddLayerMountedCombat(controller);
                            }
                        }
                    }
                }
                EditorGUILayout.EndVertical();
            }
            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(target, "Rider Combat Change");
                //EditorUtility.SetDirty(target);
            }


            serializedObject.ApplyModifiedProperties();
        }