Files
FueraDeEscala/Assets/Game Kit Controller/Scripts/Editor/grabbedObjectMeleeAttackSystemEditor.cs
Robii Aragon fd87a6ffd5 add ckg
plantilla base para movimiento básico
2026-02-05 05:07:55 -08:00

1869 lines
68 KiB
C#

using UnityEngine;
using System.Collections;
#if UNITY_EDITOR
using UnityEditor;
[CustomEditor (typeof (grabbedObjectMeleeAttackSystem))]
public class grabbedObjectMeleeAttackSystemEditor : Editor
{
SerializedProperty grabbedObjectMeleeAttackEnabled;
SerializedProperty canGrabMeleeObjectsEnabled;
SerializedProperty useAttackTypes;
SerializedProperty generalAttackDamageMultiplier;
SerializedProperty meleeAttackTypes;
SerializedProperty playerOnGroundToActivateAttack;
SerializedProperty disableGrabObjectsInputWhenCarryingMeleeWeapon;
SerializedProperty useThrowReturnMeleeWeaponSystemEnabled;
SerializedProperty useCustomLayerToDetectSurfaces;
SerializedProperty customLayerToDetectSurfaces;
SerializedProperty checkTriggerSurfacesOnMeleeAttacks;
SerializedProperty useCustomIgnoreTags;
SerializedProperty customTagsToIgnoreList;
SerializedProperty checkSurfacesWithCapsuleRaycastEnabled;
SerializedProperty ignoreGetHealthFromDamagingObjects;
SerializedProperty ignoreGetHealthFromDamagingObjectsOnWeaponInfo;
SerializedProperty ignoreCutModeOnMeleeWeaponAttack;
SerializedProperty grabbedWeaponInfoList;
SerializedProperty checkSurfaceInfoEnabled;
SerializedProperty surfaceInfoOnMeleeAttackNameForNotFound;
SerializedProperty surfaceInfoOnMeleeAttackNameForSwingOnAir;
SerializedProperty surfaceInfoOnMeleeAttackList;
SerializedProperty useStaminaOnAttackEnabled;
SerializedProperty attackStaminaStateName;
SerializedProperty generalStaminaUseMultiplier;
SerializedProperty cuttingModeEnabled;
SerializedProperty eventOnCuttingModeStart;
SerializedProperty eventOnCuttingModeEnd;
SerializedProperty blockModeEnabled;
SerializedProperty generalBlockProtectionMultiplier;
SerializedProperty cancelBlockReactionStateName;
SerializedProperty shieldCanBeUsedWithoutMeleeWeapon;
SerializedProperty rightHandMountPoint;
SerializedProperty leftHandMountPoint;
SerializedProperty shieldRightHandMountPoint;
SerializedProperty shieldLeftHandMountPoint;
SerializedProperty shieldBackMountPoint;
SerializedProperty eventToActivateMeleeModeWhenUsingShieldWithoutMeleeWeapon;
SerializedProperty eventToUpdateCharacterSurfaceOnBlockOn;
SerializedProperty eventToUpdateCharacterSurfaceOnBlockOff;
SerializedProperty useMatchTargetSystemOnAttack;
SerializedProperty ignoreAttackSettingToMatchTarget;
SerializedProperty mainMatchPlayerToTargetSystem;
SerializedProperty checkDurabilityOnAttackEnabled;
SerializedProperty checkDurabilityOnBlockEnabled;
SerializedProperty generalAttackDurabilityMultiplier;
SerializedProperty generalBlockDurabilityMultiplier;
SerializedProperty useEventOnDurabilityEmptyOnMeleeWeapon;
SerializedProperty eventOnDurabilityEmptyOnMeleeWeapon;
SerializedProperty useEventOnDurabilityEmptyOnBlock;
SerializedProperty eventOnDurabilityEmptyOnBlock;
SerializedProperty mainMeleeCombatAxesInputName;
SerializedProperty mainMeleeCombatBlockInputName;
SerializedProperty ignoreUseDrawKeepWeaponAnimation;
SerializedProperty showExtraActionIconTexture;
SerializedProperty extraActionIconGameObject;
SerializedProperty extraActionRawImage;
SerializedProperty useEventsOnAttack;
SerializedProperty eventOnAttackStart;
SerializedProperty eventOnAttackEnd;
SerializedProperty useEventsOnBlockDamage;
SerializedProperty eventOnBlockActivate;
SerializedProperty eventOnBlockDeactivate;
SerializedProperty useEventsOnGrabDropObject;
SerializedProperty eventOnGrabObject;
SerializedProperty eventOnDropObject;
SerializedProperty useEventsOnAttackCantBeBlocked;
SerializedProperty eventOnAttackCantBeBlocked;
SerializedProperty hideInventoryQuickAccessSlotsWhenCarryingMeleeWeapon;
SerializedProperty eventOnHideInventoryQuickAccessSlots;
SerializedProperty eventOnShowInventoryQuickAccessSlots;
SerializedProperty useEventToActivateParryStateIfAttackInProcess;
SerializedProperty eventToActivateParryStateIfAttackInProcess;
SerializedProperty useEventOnAttackBlockedPerfectly;
SerializedProperty eventOnAttackBlockedPerfectly;
SerializedProperty currentGrabbedObjectTransform;
SerializedProperty mainRemoteEventSystem;
SerializedProperty playerControllerGameObject;
SerializedProperty mainPlayerController;
SerializedProperty mainGrabObjects;
SerializedProperty mainHealth;
SerializedProperty mainCameraTransform;
SerializedProperty mainStaminaSystem;
SerializedProperty handPositionReference;
SerializedProperty mainAudioSource;
SerializedProperty mainSliceSystem;
SerializedProperty mainAnimator;
SerializedProperty mainFindObjectivesSystem;
SerializedProperty mainMeleeWeaponsGrabbedManager;
SerializedProperty playerInput;
SerializedProperty parentToPlaceTriggerInFrontOfCharacter;
SerializedProperty mainMeleeCombatThrowReturnWeaponSystem;
SerializedProperty showDebugPrint;
SerializedProperty showDebugDraw;
SerializedProperty grabbedObjectMeleeAttackActive;
SerializedProperty carryingObject;
SerializedProperty attackInProcess;
SerializedProperty meleeAttackTypesAmount;
SerializedProperty currentHitCombat;
SerializedProperty dualWieldHitCombat;
SerializedProperty currentAttackIndex;
SerializedProperty blockActive;
SerializedProperty blockActivePreviously;
SerializedProperty objectThrown;
SerializedProperty cuttingModeActive;
SerializedProperty attackInputPausedForStamina;
SerializedProperty damageTriggerInProcess;
SerializedProperty meleeAttackInputPaused;
SerializedProperty reducedBlockDamageProtectionActive;
SerializedProperty canCancelBlockToStartAttackActive;
SerializedProperty blockInputPaused;
SerializedProperty isDualWieldWeapon;
SerializedProperty mainDualWieldMeleeWeaponObjectSystem;
SerializedProperty throwWeaponActionPaused;
SerializedProperty shieldActive;
SerializedProperty carryingShield;
SerializedProperty currentShieldName;
SerializedProperty currentShieldGameObject;
SerializedProperty currentShieldHandMountPointTransformReference;
SerializedProperty currentShieldBackMountPointTransformReference;
SerializedProperty weaponsCanBeStolenFromCharacter;
SerializedProperty placeTriggerInFrontOfCharacterOnAllAttacks;
SerializedProperty drawMeleeWeaponIfAttackInputPressedEnabled;
SerializedProperty mainMeleeUISystem;
SerializedProperty minWaitTimeToUseSingleAttackType;
GUIStyle sectionStyle = new GUIStyle ();
string currentLabel;
Color buttonColor;
string buttonText;
GUIStyle buttonStyle = new GUIStyle ();
string [] mainTabsOptions = {
"Damage Detection Settings",
"Weapon Info List Settings",
"Surface Info List Settings",
"Shield & Block Mode Settings",
"Weapon Durability Settings",
"Weapon Extra Action Settings",
"Event Settings",
"Other Settings",
"Debug State",
"Components",
"Show All",
"Hide All"
};
string currentButtonString;
int mainTabIndex = -1;
void OnEnable ()
{
grabbedObjectMeleeAttackEnabled = serializedObject.FindProperty ("grabbedObjectMeleeAttackEnabled");
canGrabMeleeObjectsEnabled = serializedObject.FindProperty ("canGrabMeleeObjectsEnabled");
useAttackTypes = serializedObject.FindProperty ("useAttackTypes");
generalAttackDamageMultiplier = serializedObject.FindProperty ("generalAttackDamageMultiplier");
meleeAttackTypes = serializedObject.FindProperty ("meleeAttackTypes");
playerOnGroundToActivateAttack = serializedObject.FindProperty ("playerOnGroundToActivateAttack");
disableGrabObjectsInputWhenCarryingMeleeWeapon = serializedObject.FindProperty ("disableGrabObjectsInputWhenCarryingMeleeWeapon");
useThrowReturnMeleeWeaponSystemEnabled = serializedObject.FindProperty ("useThrowReturnMeleeWeaponSystemEnabled");
useCustomLayerToDetectSurfaces = serializedObject.FindProperty ("useCustomLayerToDetectSurfaces");
customLayerToDetectSurfaces = serializedObject.FindProperty ("customLayerToDetectSurfaces");
checkTriggerSurfacesOnMeleeAttacks = serializedObject.FindProperty ("checkTriggerSurfacesOnMeleeAttacks");
useCustomIgnoreTags = serializedObject.FindProperty ("useCustomIgnoreTags");
customTagsToIgnoreList = serializedObject.FindProperty ("customTagsToIgnoreList");
checkSurfacesWithCapsuleRaycastEnabled = serializedObject.FindProperty ("checkSurfacesWithCapsuleRaycastEnabled");
ignoreGetHealthFromDamagingObjects = serializedObject.FindProperty ("ignoreGetHealthFromDamagingObjects");
ignoreGetHealthFromDamagingObjectsOnWeaponInfo = serializedObject.FindProperty ("ignoreGetHealthFromDamagingObjectsOnWeaponInfo");
ignoreCutModeOnMeleeWeaponAttack = serializedObject.FindProperty ("ignoreCutModeOnMeleeWeaponAttack");
grabbedWeaponInfoList = serializedObject.FindProperty ("grabbedWeaponInfoList");
checkSurfaceInfoEnabled = serializedObject.FindProperty ("checkSurfaceInfoEnabled");
surfaceInfoOnMeleeAttackNameForNotFound = serializedObject.FindProperty ("surfaceInfoOnMeleeAttackNameForNotFound");
surfaceInfoOnMeleeAttackNameForSwingOnAir = serializedObject.FindProperty ("surfaceInfoOnMeleeAttackNameForSwingOnAir");
surfaceInfoOnMeleeAttackList = serializedObject.FindProperty ("surfaceInfoOnMeleeAttackList");
useStaminaOnAttackEnabled = serializedObject.FindProperty ("useStaminaOnAttackEnabled");
attackStaminaStateName = serializedObject.FindProperty ("attackStaminaStateName");
generalStaminaUseMultiplier = serializedObject.FindProperty ("generalStaminaUseMultiplier");
cuttingModeEnabled = serializedObject.FindProperty ("cuttingModeEnabled");
eventOnCuttingModeStart = serializedObject.FindProperty ("eventOnCuttingModeStart");
eventOnCuttingModeEnd = serializedObject.FindProperty ("eventOnCuttingModeEnd");
blockModeEnabled = serializedObject.FindProperty ("blockModeEnabled");
generalBlockProtectionMultiplier = serializedObject.FindProperty ("generalBlockProtectionMultiplier");
cancelBlockReactionStateName = serializedObject.FindProperty ("cancelBlockReactionStateName");
shieldCanBeUsedWithoutMeleeWeapon = serializedObject.FindProperty ("shieldCanBeUsedWithoutMeleeWeapon");
rightHandMountPoint = serializedObject.FindProperty ("rightHandMountPoint");
leftHandMountPoint = serializedObject.FindProperty ("leftHandMountPoint");
shieldRightHandMountPoint = serializedObject.FindProperty ("shieldRightHandMountPoint");
shieldLeftHandMountPoint = serializedObject.FindProperty ("shieldLeftHandMountPoint");
shieldBackMountPoint = serializedObject.FindProperty ("shieldBackMountPoint");
eventToActivateMeleeModeWhenUsingShieldWithoutMeleeWeapon = serializedObject.FindProperty ("eventToActivateMeleeModeWhenUsingShieldWithoutMeleeWeapon");
eventToUpdateCharacterSurfaceOnBlockOn = serializedObject.FindProperty ("eventToUpdateCharacterSurfaceOnBlockOn");
eventToUpdateCharacterSurfaceOnBlockOff = serializedObject.FindProperty ("eventToUpdateCharacterSurfaceOnBlockOff");
useMatchTargetSystemOnAttack = serializedObject.FindProperty ("useMatchTargetSystemOnAttack");
ignoreAttackSettingToMatchTarget = serializedObject.FindProperty ("ignoreAttackSettingToMatchTarget");
mainMatchPlayerToTargetSystem = serializedObject.FindProperty ("mainMatchPlayerToTargetSystem");
checkDurabilityOnAttackEnabled = serializedObject.FindProperty ("checkDurabilityOnAttackEnabled");
checkDurabilityOnBlockEnabled = serializedObject.FindProperty ("checkDurabilityOnBlockEnabled");
generalAttackDurabilityMultiplier = serializedObject.FindProperty ("generalAttackDurabilityMultiplier");
generalBlockDurabilityMultiplier = serializedObject.FindProperty ("generalBlockDurabilityMultiplier");
useEventOnDurabilityEmptyOnMeleeWeapon = serializedObject.FindProperty ("useEventOnDurabilityEmptyOnMeleeWeapon");
eventOnDurabilityEmptyOnMeleeWeapon = serializedObject.FindProperty ("eventOnDurabilityEmptyOnMeleeWeapon");
useEventOnDurabilityEmptyOnBlock = serializedObject.FindProperty ("useEventOnDurabilityEmptyOnBlock");
eventOnDurabilityEmptyOnBlock = serializedObject.FindProperty ("eventOnDurabilityEmptyOnBlock");
mainMeleeCombatAxesInputName = serializedObject.FindProperty ("mainMeleeCombatAxesInputName");
mainMeleeCombatBlockInputName = serializedObject.FindProperty ("mainMeleeCombatBlockInputName");
ignoreUseDrawKeepWeaponAnimation = serializedObject.FindProperty ("ignoreUseDrawKeepWeaponAnimation");
showExtraActionIconTexture = serializedObject.FindProperty ("showExtraActionIconTexture");
extraActionIconGameObject = serializedObject.FindProperty ("extraActionIconGameObject");
extraActionRawImage = serializedObject.FindProperty ("extraActionRawImage");
useEventsOnAttack = serializedObject.FindProperty ("useEventsOnAttack");
eventOnAttackStart = serializedObject.FindProperty ("eventOnAttackStart");
eventOnAttackEnd = serializedObject.FindProperty ("eventOnAttackEnd");
useEventsOnBlockDamage = serializedObject.FindProperty ("useEventsOnBlockDamage");
eventOnBlockActivate = serializedObject.FindProperty ("eventOnBlockActivate");
eventOnBlockDeactivate = serializedObject.FindProperty ("eventOnBlockDeactivate");
useEventsOnGrabDropObject = serializedObject.FindProperty ("useEventsOnGrabDropObject");
eventOnGrabObject = serializedObject.FindProperty ("eventOnGrabObject");
eventOnDropObject = serializedObject.FindProperty ("eventOnDropObject");
useEventsOnAttackCantBeBlocked = serializedObject.FindProperty ("useEventsOnAttackCantBeBlocked");
eventOnAttackCantBeBlocked = serializedObject.FindProperty ("eventOnAttackCantBeBlocked");
hideInventoryQuickAccessSlotsWhenCarryingMeleeWeapon = serializedObject.FindProperty ("hideInventoryQuickAccessSlotsWhenCarryingMeleeWeapon");
eventOnHideInventoryQuickAccessSlots = serializedObject.FindProperty ("eventOnHideInventoryQuickAccessSlots");
eventOnShowInventoryQuickAccessSlots = serializedObject.FindProperty ("eventOnShowInventoryQuickAccessSlots");
useEventToActivateParryStateIfAttackInProcess = serializedObject.FindProperty ("useEventToActivateParryStateIfAttackInProcess");
eventToActivateParryStateIfAttackInProcess = serializedObject.FindProperty ("eventToActivateParryStateIfAttackInProcess");
useEventOnAttackBlockedPerfectly = serializedObject.FindProperty ("useEventOnAttackBlockedPerfectly");
eventOnAttackBlockedPerfectly = serializedObject.FindProperty ("eventOnAttackBlockedPerfectly");
currentGrabbedObjectTransform = serializedObject.FindProperty ("currentGrabbedObjectTransform");
mainRemoteEventSystem = serializedObject.FindProperty ("mainRemoteEventSystem");
playerControllerGameObject = serializedObject.FindProperty ("playerControllerGameObject");
mainPlayerController = serializedObject.FindProperty ("mainPlayerController");
mainGrabObjects = serializedObject.FindProperty ("mainGrabObjects");
mainHealth = serializedObject.FindProperty ("mainHealth");
mainCameraTransform = serializedObject.FindProperty ("mainCameraTransform");
mainStaminaSystem = serializedObject.FindProperty ("mainStaminaSystem");
handPositionReference = serializedObject.FindProperty ("handPositionReference");
mainAudioSource = serializedObject.FindProperty ("mainAudioSource");
mainSliceSystem = serializedObject.FindProperty ("mainSliceSystem");
mainAnimator = serializedObject.FindProperty ("mainAnimator");
mainFindObjectivesSystem = serializedObject.FindProperty ("mainFindObjectivesSystem");
mainMeleeWeaponsGrabbedManager = serializedObject.FindProperty ("mainMeleeWeaponsGrabbedManager");
playerInput = serializedObject.FindProperty ("playerInput");
parentToPlaceTriggerInFrontOfCharacter = serializedObject.FindProperty ("parentToPlaceTriggerInFrontOfCharacter");
mainMeleeCombatThrowReturnWeaponSystem = serializedObject.FindProperty ("mainMeleeCombatThrowReturnWeaponSystem");
showDebugPrint = serializedObject.FindProperty ("showDebugPrint");
showDebugDraw = serializedObject.FindProperty ("showDebugDraw");
grabbedObjectMeleeAttackActive = serializedObject.FindProperty ("grabbedObjectMeleeAttackActive");
carryingObject = serializedObject.FindProperty ("carryingObject");
attackInProcess = serializedObject.FindProperty ("attackInProcess");
meleeAttackTypesAmount = serializedObject.FindProperty ("meleeAttackTypesAmount");
currentHitCombat = serializedObject.FindProperty ("currentHitCombat");
dualWieldHitCombat = serializedObject.FindProperty ("dualWieldHitCombat");
currentAttackIndex = serializedObject.FindProperty ("currentAttackIndex");
blockActive = serializedObject.FindProperty ("blockActive");
blockActivePreviously = serializedObject.FindProperty ("blockActivePreviously");
objectThrown = serializedObject.FindProperty ("objectThrown");
cuttingModeActive = serializedObject.FindProperty ("cuttingModeActive");
attackInputPausedForStamina = serializedObject.FindProperty ("attackInputPausedForStamina");
damageTriggerInProcess = serializedObject.FindProperty ("damageTriggerInProcess");
meleeAttackInputPaused = serializedObject.FindProperty ("meleeAttackInputPaused");
reducedBlockDamageProtectionActive = serializedObject.FindProperty ("reducedBlockDamageProtectionActive");
canCancelBlockToStartAttackActive = serializedObject.FindProperty ("canCancelBlockToStartAttackActive");
blockInputPaused = serializedObject.FindProperty ("blockInputPaused");
isDualWieldWeapon = serializedObject.FindProperty ("isDualWieldWeapon");
mainDualWieldMeleeWeaponObjectSystem = serializedObject.FindProperty ("mainDualWieldMeleeWeaponObjectSystem");
throwWeaponActionPaused = serializedObject.FindProperty ("throwWeaponActionPaused");
shieldActive = serializedObject.FindProperty ("shieldActive");
carryingShield = serializedObject.FindProperty ("carryingShield");
currentShieldName = serializedObject.FindProperty ("currentShieldName");
currentShieldGameObject = serializedObject.FindProperty ("currentShieldGameObject");
currentShieldHandMountPointTransformReference = serializedObject.FindProperty ("currentShieldHandMountPointTransformReference");
currentShieldBackMountPointTransformReference = serializedObject.FindProperty ("currentShieldBackMountPointTransformReference");
weaponsCanBeStolenFromCharacter = serializedObject.FindProperty ("weaponsCanBeStolenFromCharacter");
placeTriggerInFrontOfCharacterOnAllAttacks = serializedObject.FindProperty ("placeTriggerInFrontOfCharacterOnAllAttacks");
drawMeleeWeaponIfAttackInputPressedEnabled = serializedObject.FindProperty ("drawMeleeWeaponIfAttackInputPressedEnabled");
mainMeleeUISystem = serializedObject.FindProperty ("mainMeleeUISystem");
minWaitTimeToUseSingleAttackType = serializedObject.FindProperty ("minWaitTimeToUseSingleAttackType");
}
public override void OnInspectorGUI ()
{
EditorGUI.BeginChangeCheck ();
GUILayout.BeginVertical (GUILayout.Height (30));
EditorGUILayout.Space ();
buttonStyle = new GUIStyle (GUI.skin.button);
buttonStyle.fontStyle = FontStyle.Bold;
buttonStyle.fontSize = 12;
GUILayout.BeginVertical ("Main Settings", "window");
EditorGUILayout.PropertyField (grabbedObjectMeleeAttackEnabled);
EditorGUILayout.PropertyField (canGrabMeleeObjectsEnabled);
EditorGUILayout.PropertyField (generalAttackDamageMultiplier);
EditorGUILayout.PropertyField (playerOnGroundToActivateAttack);
EditorGUILayout.PropertyField (disableGrabObjectsInputWhenCarryingMeleeWeapon);
EditorGUILayout.PropertyField (useThrowReturnMeleeWeaponSystemEnabled);
EditorGUILayout.PropertyField (placeTriggerInFrontOfCharacterOnAllAttacks);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (drawMeleeWeaponIfAttackInputPressedEnabled);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (minWaitTimeToUseSingleAttackType);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useAttackTypes);
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Melee Attack Types Settings", "window");
showSimpleList (meleeAttackTypes, "Melee Attack Types", true);
GUILayout.EndVertical ();
GUILayout.EndVertical ();
EditorGUILayout.Space ();
mainTabIndex = GUILayout.SelectionGrid (mainTabIndex, mainTabsOptions, 3);
if (mainTabIndex >= 0 && mainTabIndex < mainTabsOptions.Length) {
switch (mainTabsOptions [mainTabIndex]) {
case "Damage Detection Settings":
showDamageDetectionSettings ();
break;
case "Weapon Info List Settings":
showWeaponInfoListSettings ();
break;
case "Surface Info List Settings":
showSurfaceInfoListSettings ();
break;
case "Shield & Block Mode Settings":
showShieldAndBlockSettings ();
break;
case "Weapon Durability Settings":
showDurabilitySettings ();
break;
case "Weapon Extra Action Settings":
showWeaponExtraActionSettings ();
break;
case "Other Settings":
showOtherSettings ();
break;
case "Event Settings":
showEventSettings ();
break;
case "Components":
showComponents ();
break;
case "Debug State":
showDebugSettings ();
break;
case "Show All":
showDamageDetectionSettings ();
showWeaponInfoListSettings ();
showSurfaceInfoListSettings ();
showShieldAndBlockSettings ();
showDurabilitySettings ();
showWeaponExtraActionSettings ();
showOtherSettings ();
showEventSettings ();
showComponents ();
showDebugSettings ();
break;
case "Hide All":
mainTabIndex = -1;
break;
default:
break;
}
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
if (EditorGUI.EndChangeCheck ()) {
serializedObject.ApplyModifiedProperties ();
Repaint ();
}
}
void showSectionTitle (string sectionTitle)
{
sectionStyle.fontStyle = FontStyle.Bold;
sectionStyle.fontSize = 30;
sectionStyle.alignment = TextAnchor.MiddleCenter;
EditorGUILayout.Space ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
EditorGUILayout.LabelField (sectionTitle, sectionStyle);
EditorGUILayout.Space ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
}
void showWeaponInfoListSettings ()
{
showSectionTitle ("WEAPON INFO LIST SETTINGS");
GUILayout.BeginVertical ("Weapon Info List Settings", "window");
showGrabbedWeaponInfoList (grabbedWeaponInfoList);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
void showSurfaceInfoListSettings ()
{
showSectionTitle ("SURFACE INFO LIST SETTINGS");
GUILayout.BeginVertical ("Surface Info List Settings", "window");
EditorGUILayout.PropertyField (checkSurfaceInfoEnabled);
EditorGUILayout.PropertyField (surfaceInfoOnMeleeAttackNameForNotFound);
EditorGUILayout.PropertyField (surfaceInfoOnMeleeAttackNameForSwingOnAir);
showSurfaceInfoOnMeleeAttackList (surfaceInfoOnMeleeAttackList);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
void showDamageDetectionSettings ()
{
showSectionTitle ("DAMAGE DETECTION SETTINGS");
GUILayout.BeginVertical ("Damage Detection Settings", "window");
EditorGUILayout.PropertyField (useCustomLayerToDetectSurfaces);
EditorGUILayout.PropertyField (customLayerToDetectSurfaces);
EditorGUILayout.PropertyField (useCustomIgnoreTags);
showSimpleList (customTagsToIgnoreList, "Custom Tags To Ignore List", true);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (checkSurfacesWithCapsuleRaycastEnabled);
EditorGUILayout.PropertyField (ignoreGetHealthFromDamagingObjects);
EditorGUILayout.PropertyField (ignoreGetHealthFromDamagingObjectsOnWeaponInfo);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (ignoreCutModeOnMeleeWeaponAttack);
EditorGUILayout.PropertyField (checkTriggerSurfacesOnMeleeAttacks);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
void showShieldAndBlockSettings ()
{
showSectionTitle ("SHIED/BLOCK SETTINGS");
GUILayout.BeginVertical ("Block Mode Settings", "window");
EditorGUILayout.PropertyField (blockModeEnabled);
EditorGUILayout.PropertyField (generalBlockProtectionMultiplier);
EditorGUILayout.PropertyField (cancelBlockReactionStateName);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Shield Settings", "window");
EditorGUILayout.PropertyField (shieldCanBeUsedWithoutMeleeWeapon);
EditorGUILayout.PropertyField (rightHandMountPoint);
EditorGUILayout.PropertyField (leftHandMountPoint);
EditorGUILayout.PropertyField (shieldRightHandMountPoint);
EditorGUILayout.PropertyField (shieldLeftHandMountPoint);
EditorGUILayout.PropertyField (shieldBackMountPoint);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventToActivateMeleeModeWhenUsingShieldWithoutMeleeWeapon);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Block Events Settings", "window");
EditorGUILayout.PropertyField (eventToUpdateCharacterSurfaceOnBlockOn);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventToUpdateCharacterSurfaceOnBlockOff);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
void showOtherSettings ()
{
showSectionTitle ("OTHER SETTINGS");
GUILayout.BeginVertical ("Stamina Settings", "window");
EditorGUILayout.PropertyField (useStaminaOnAttackEnabled);
EditorGUILayout.PropertyField (attackStaminaStateName);
EditorGUILayout.PropertyField (generalStaminaUseMultiplier);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Cutting Mode Settings", "window");
EditorGUILayout.PropertyField (cuttingModeEnabled);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnCuttingModeStart);
EditorGUILayout.PropertyField (eventOnCuttingModeEnd);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Match Target Settings", "window");
EditorGUILayout.PropertyField (useMatchTargetSystemOnAttack);
EditorGUILayout.PropertyField (ignoreAttackSettingToMatchTarget);
EditorGUILayout.PropertyField (mainMatchPlayerToTargetSystem);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Other Settings", "window");
EditorGUILayout.PropertyField (mainMeleeCombatAxesInputName);
EditorGUILayout.PropertyField (mainMeleeCombatBlockInputName);
EditorGUILayout.PropertyField (ignoreUseDrawKeepWeaponAnimation);
EditorGUILayout.PropertyField (weaponsCanBeStolenFromCharacter);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
void showDurabilitySettings ()
{
showSectionTitle ("DURABILITY SETTINGS");
GUILayout.BeginVertical ("Weapon Durability Settings", "window");
EditorGUILayout.PropertyField (checkDurabilityOnAttackEnabled);
EditorGUILayout.PropertyField (checkDurabilityOnBlockEnabled);
EditorGUILayout.PropertyField (generalAttackDurabilityMultiplier);
EditorGUILayout.PropertyField (generalBlockDurabilityMultiplier);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useEventOnDurabilityEmptyOnMeleeWeapon);
if (useEventOnDurabilityEmptyOnMeleeWeapon.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnDurabilityEmptyOnMeleeWeapon);
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useEventOnDurabilityEmptyOnBlock);
if (useEventOnDurabilityEmptyOnBlock.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnDurabilityEmptyOnBlock);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
void showWeaponExtraActionSettings ()
{
showSectionTitle ("WEAPON EXTRA ACTION SETTINGS");
GUILayout.BeginVertical ("Weapon Extra Action Settings", "window");
EditorGUILayout.PropertyField (showExtraActionIconTexture);
EditorGUILayout.PropertyField (extraActionIconGameObject);
EditorGUILayout.PropertyField (extraActionRawImage);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
void showDebugSettings ()
{
showSectionTitle ("DEBUG SETTINGS");
GUILayout.BeginVertical ("Debug", "window");
EditorGUILayout.PropertyField (showDebugPrint);
EditorGUILayout.PropertyField (showDebugDraw);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (grabbedObjectMeleeAttackActive);
EditorGUILayout.PropertyField (carryingObject);
EditorGUILayout.PropertyField (attackInProcess);
EditorGUILayout.PropertyField (currentAttackIndex);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (blockActive);
EditorGUILayout.PropertyField (blockActivePreviously);
EditorGUILayout.PropertyField (reducedBlockDamageProtectionActive);
EditorGUILayout.PropertyField (canCancelBlockToStartAttackActive);
EditorGUILayout.PropertyField (blockInputPaused);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (shieldActive);
EditorGUILayout.PropertyField (carryingShield);
EditorGUILayout.PropertyField (currentShieldName);
EditorGUILayout.PropertyField (currentShieldGameObject);
EditorGUILayout.PropertyField (currentShieldHandMountPointTransformReference);
EditorGUILayout.PropertyField (currentShieldBackMountPointTransformReference);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (currentHitCombat);
EditorGUILayout.PropertyField (dualWieldHitCombat);
EditorGUILayout.PropertyField (mainDualWieldMeleeWeaponObjectSystem);
EditorGUILayout.PropertyField (objectThrown);
EditorGUILayout.PropertyField (cuttingModeActive);
EditorGUILayout.PropertyField (attackInputPausedForStamina);
EditorGUILayout.PropertyField (damageTriggerInProcess);
EditorGUILayout.PropertyField (meleeAttackInputPaused);
EditorGUILayout.PropertyField (isDualWieldWeapon);
EditorGUILayout.PropertyField (throwWeaponActionPaused);
EditorGUILayout.Space ();
showSimpleList (meleeAttackTypesAmount, "Melee Attack Types Amount", false);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
void showEventSettings ()
{
showSectionTitle ("EVENT SETTINGS");
GUILayout.BeginVertical ("Event Settings", "window");
EditorGUILayout.PropertyField (useEventsOnAttack);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnAttackStart);
EditorGUILayout.PropertyField (eventOnAttackEnd);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useEventsOnBlockDamage);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnBlockActivate);
EditorGUILayout.PropertyField (eventOnBlockDeactivate);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useEventsOnGrabDropObject);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnGrabObject);
EditorGUILayout.PropertyField (eventOnDropObject);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useEventsOnAttackCantBeBlocked);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnAttackCantBeBlocked);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (hideInventoryQuickAccessSlotsWhenCarryingMeleeWeapon);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnHideInventoryQuickAccessSlots);
EditorGUILayout.PropertyField (eventOnShowInventoryQuickAccessSlots);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useEventToActivateParryStateIfAttackInProcess);
if (useEventToActivateParryStateIfAttackInProcess.boolValue) {
EditorGUILayout.PropertyField (eventToActivateParryStateIfAttackInProcess);
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useEventOnAttackBlockedPerfectly);
if (useEventOnAttackBlockedPerfectly.boolValue) {
EditorGUILayout.PropertyField (eventOnAttackBlockedPerfectly);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
void showComponents ()
{
showSectionTitle ("COMPONENTS");
GUILayout.BeginVertical ("Components", "window");
EditorGUILayout.PropertyField (currentGrabbedObjectTransform);
EditorGUILayout.PropertyField (mainCameraTransform);
EditorGUILayout.PropertyField (handPositionReference);
EditorGUILayout.PropertyField (mainAudioSource);
EditorGUILayout.PropertyField (parentToPlaceTriggerInFrontOfCharacter);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (mainRemoteEventSystem);
EditorGUILayout.PropertyField (playerControllerGameObject);
EditorGUILayout.PropertyField (mainPlayerController);
EditorGUILayout.PropertyField (mainGrabObjects);
EditorGUILayout.PropertyField (mainHealth);
EditorGUILayout.PropertyField (mainSliceSystem);
EditorGUILayout.PropertyField (mainAnimator);
EditorGUILayout.PropertyField (mainFindObjectivesSystem);
EditorGUILayout.PropertyField (mainMeleeWeaponsGrabbedManager);
EditorGUILayout.PropertyField (playerInput);
EditorGUILayout.PropertyField (mainMeleeCombatThrowReturnWeaponSystem);
EditorGUILayout.PropertyField (mainStaminaSystem);
EditorGUILayout.PropertyField (mainMeleeUISystem);
GUILayout.EndVertical ();
}
void showGrabbedWeaponInfoListElement (SerializedProperty list)
{
GUILayout.BeginVertical ("box");
GUILayout.BeginVertical ("Main Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Movement Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("setNewIdleID"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("idleIDUsed"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useStrafeMode"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("strafeIDUsed"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("setPreviousStrafeModeOnDropObject"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("previousStrafeMode"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("activateStrafeModeOnLockOnTargetActive"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("deactivateStrafeModeOnLockOnTargetDeactivate"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("toggleStrafeModeIfRunningActive"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("setSprintEnabledStateWithWeapon"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("sprintEnabledStateWithWeapon"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("setNewCrouchID"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("crouchIDUsed"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("setNewMovementID"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("movementIDUsed"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Shield Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("weaponCanUseShield"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("shieldID"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("regularMovementBlockShieldActionName"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("strafeMovementBlockShieldID"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("shieldIDFreeMovement"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("shieldIDStrafeMovement"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("isEmptyWeaponToUseOnlyShield"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Damage Trigger Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("placeTriggerInFrontOfCharacterOnAllAttacks"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("setConfigureDamageAsConstantValueOnWeapon"));
if (list.FindPropertyRelative ("setConfigureDamageAsConstantValueOnWeapon").boolValue) {
EditorGUILayout.PropertyField (list.FindPropertyRelative ("configureDamageAsConstantValueOnWeapon"));
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Event Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventsOnGrabDropObject"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnGrabObject"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnDropObject"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Keep/Draw Weapon Event Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventsOnKeepOrDrawMeleeWeapon"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventsOnKeepMeleeWeapon"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventsOnDrawMeleeWeapon"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Remote Event Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRemoteEventsOnGrabObject"));
EditorGUILayout.Space ();
showSimpleList (list.FindPropertyRelative ("remoteEventOnGrabObject"), "Remote Event On Grab Object", true);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRemoteEventsOnDropObject"));
EditorGUILayout.Space ();
showSimpleList (list.FindPropertyRelative ("remoteEventOnDropObject"), "Remote Event On Drop Object", true);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Attacks Unable To Block Settingss", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("attacksCantBeBlocked"));
showSimpleList (list.FindPropertyRelative ("attackIDCantBeBlockedList"), "Attack ID Cant Be Blocked List", true);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Damage Detected Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventsOnDamageDetected"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("checkObjectsToUseRemoteEventsOnDamage"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("layerToUseRemoteEventsOnDamage"));
showEventOnDamageInfoList (list.FindPropertyRelative ("eventOnDamageInfoList"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Obtain Health From Damage Applied Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("getHealthFromDamagingObjects"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("healthFromDamagingObjectsMultiplier"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Obtain Health From Blocks Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("getHealthFromBlocks"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("healthAmountFromBlocks"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("getHealthFromPerfectBlocks"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("healthAmountFromPerfectBlocks"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Range Attack Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRangeAttackID"));
if (list.FindPropertyRelative ("useRangeAttackID").boolValue) {
showRangeAttackInfoList (list.FindPropertyRelative ("rangeAttackInfoList"));
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Press Up/Down Event Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventsOnPressDownState"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnPressDownState"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventsOnPressUpState"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnPressUpState"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Deflect Projectile Event Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventsOnDeflectProjectile"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventsOnDeflectProjectile"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Parry Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("ignoreParryOnPerfectBlock"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Custom Position Reference Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCustomGrabbedWeaponReferencePosition"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("customGrabbedWeaponReferencePosition"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useGrabbedWeaponReferenceValues"));
if (list.FindPropertyRelative ("useGrabbedWeaponReferenceValues").boolValue) {
EditorGUILayout.PropertyField (list.FindPropertyRelative ("grabbedWeaponReferenceValuesPosition"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("grabbedWeaponReferenceValuesEuler"));
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCustomReferencePositionToKeepObjectMesh"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("customReferencePositionToKeepObjectMesh"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useReferenceToKeepObjectMeshValues"));
if (list.FindPropertyRelative ("useReferenceToKeepObjectMeshValues").boolValue) {
EditorGUILayout.PropertyField (list.FindPropertyRelative ("referenceToKeepObjectMeshValuesPosition"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("referenceToKeepObjectMeshValuesEuler"));
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCustomReferencePositionToKeepObject"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("customReferencePositionToKeepObject"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useReferenceToKeepObjectValues"));
if (list.FindPropertyRelative ("useReferenceToKeepObjectValues").boolValue) {
EditorGUILayout.PropertyField (list.FindPropertyRelative ("referenceToKeepObjectValuesPosition"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("referenceToKeepObjectValuesEuler"));
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Attack List Info Template Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useMeleeWeaponAttackInfoList"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("setInitialWeaponAttackInfoList"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("initialWeaponAttackInfoListIndex"));
showMeleeWeaponAttackInfoList (list.FindPropertyRelative ("meleeWeaponAttackInfoList"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Weapon Durability Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventOnEmptyDurability"));
if (list.FindPropertyRelative ("useEventOnEmptyDurability").boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnEmptyDurability"));
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
void showGrabbedWeaponInfoList (SerializedProperty list)
{
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
GUILayout.BeginVertical ("box");
EditorGUILayout.Space ();
GUILayout.Label ("Number Of Weapons: \t" + list.arraySize);
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add")) {
list.arraySize++;
}
if (GUILayout.Button ("Clear")) {
list.arraySize = 0;
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Expand All")) {
for (int i = 0; i < list.arraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = true;
}
}
if (GUILayout.Button ("Collapse All")) {
for (int i = 0; i < list.arraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = false;
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
for (int i = 0; i < list.arraySize; i++) {
bool expanded = false;
GUILayout.BeginHorizontal ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
if (i < list.arraySize && i >= 0) {
EditorGUILayout.BeginVertical ();
SerializedProperty currentArryElement = list.GetArrayElementAtIndex (i);
EditorGUILayout.PropertyField (currentArryElement, false);
if (currentArryElement.isExpanded) {
expanded = true;
showGrabbedWeaponInfoListElement (currentArryElement);
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
GUILayout.EndHorizontal ();
if (expanded) {
GUILayout.BeginVertical ();
} else {
GUILayout.BeginHorizontal ();
}
if (GUILayout.Button ("x")) {
list.DeleteArrayElementAtIndex (i);
}
if (GUILayout.Button ("v")) {
if (i >= 0) {
list.MoveArrayElement (i, i + 1);
}
}
if (GUILayout.Button ("^")) {
if (i < list.arraySize) {
list.MoveArrayElement (i, i - 1);
}
}
if (expanded) {
GUILayout.EndVertical ();
} else {
GUILayout.EndHorizontal ();
}
GUILayout.EndHorizontal ();
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
}
void showSurfaceInfoOnMeleeAttackList (SerializedProperty list)
{
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
GUILayout.BeginVertical ("box");
EditorGUILayout.Space ();
GUILayout.Label ("Number Of Surfaces: \t" + list.arraySize);
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add")) {
list.arraySize++;
}
if (GUILayout.Button ("Clear")) {
list.arraySize = 0;
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Expand All")) {
for (int i = 0; i < list.arraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = true;
}
}
if (GUILayout.Button ("Collapse All")) {
for (int i = 0; i < list.arraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = false;
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
for (int i = 0; i < list.arraySize; i++) {
bool expanded = false;
GUILayout.BeginHorizontal ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
if (i < list.arraySize && i >= 0) {
EditorGUILayout.BeginVertical ();
SerializedProperty currentArryElement = list.GetArrayElementAtIndex (i);
EditorGUILayout.PropertyField (currentArryElement, false);
if (currentArryElement.isExpanded) {
expanded = true;
showSurfaceInfoOnMeleeAttackListElement (currentArryElement);
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
GUILayout.EndHorizontal ();
if (expanded) {
GUILayout.BeginVertical ();
} else {
GUILayout.BeginHorizontal ();
}
if (GUILayout.Button ("x")) {
list.DeleteArrayElementAtIndex (i);
}
if (GUILayout.Button ("v")) {
if (i >= 0) {
list.MoveArrayElement (i, i + 1);
}
}
if (GUILayout.Button ("^")) {
if (i < list.arraySize) {
list.MoveArrayElement (i, i - 1);
}
}
if (expanded) {
GUILayout.EndVertical ();
} else {
GUILayout.EndHorizontal ();
}
GUILayout.EndHorizontal ();
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
}
void showSurfaceInfoOnMeleeAttackListElement (SerializedProperty list)
{
GUILayout.BeginVertical ("box");
GUILayout.BeginVertical ("Main Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("surfaceName"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Sounds And Particles Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useSoundsListOnOrder"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("currentSoundIndex"));
showSimpleList (list.FindPropertyRelative ("soundsList"), "Sounds List", true);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useParticlesOnSurface"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("particlesOnSurface"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRandomParticlesOnSurfaceList"));
if (list.FindPropertyRelative ("useRandomParticlesOnSurfaceList").boolValue) {
showSimpleList (list.FindPropertyRelative ("randomParticlesOnSurfaceList"), "Random Particles On Surface List", true);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Event Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("surfaceActivatesBounceOnCharacter"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnBounceCharacter"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("stopAttackOnBounce"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
void showEventOnDamageInfoList (SerializedProperty list)
{
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
GUILayout.BeginVertical ("box");
EditorGUILayout.Space ();
GUILayout.Label ("Number Of Elements: \t" + list.arraySize);
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add")) {
list.arraySize++;
}
if (GUILayout.Button ("Clear")) {
list.arraySize = 0;
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Expand All")) {
for (int i = 0; i < list.arraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = true;
}
}
if (GUILayout.Button ("Collapse All")) {
for (int i = 0; i < list.arraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = false;
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
for (int i = 0; i < list.arraySize; i++) {
bool expanded = false;
GUILayout.BeginHorizontal ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
if (i < list.arraySize && i >= 0) {
EditorGUILayout.BeginVertical ();
SerializedProperty currentArryElement = list.GetArrayElementAtIndex (i);
EditorGUILayout.PropertyField (currentArryElement, false);
if (currentArryElement.isExpanded) {
expanded = true;
showEventOnDamageInfoListElement (currentArryElement);
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
GUILayout.EndHorizontal ();
if (expanded) {
GUILayout.BeginVertical ();
} else {
GUILayout.BeginHorizontal ();
}
if (GUILayout.Button ("x")) {
list.DeleteArrayElementAtIndex (i);
}
if (GUILayout.Button ("v")) {
if (i >= 0) {
list.MoveArrayElement (i, i + 1);
}
}
if (GUILayout.Button ("^")) {
if (i < list.arraySize) {
list.MoveArrayElement (i, i - 1);
}
}
if (expanded) {
GUILayout.EndVertical ();
} else {
GUILayout.EndHorizontal ();
}
GUILayout.EndHorizontal ();
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
}
void showEventOnDamageInfoListElement (SerializedProperty list)
{
GUILayout.BeginVertical ("box");
GUILayout.BeginVertical ("Main Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageInfoID"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnDamageDetected"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRemoteEvent"));
if (list.FindPropertyRelative ("useRemoteEvent").boolValue) {
showSimpleList (list.FindPropertyRelative ("remoteEventNameList"), "Remote Event Name List", true);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
void showRangeAttackInfoList (SerializedProperty list)
{
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
GUILayout.BeginVertical ("box");
EditorGUILayout.Space ();
GUILayout.Label ("Number Of Elements: \t" + list.arraySize);
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add")) {
list.arraySize++;
}
if (GUILayout.Button ("Clear")) {
list.arraySize = 0;
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Expand All")) {
for (int i = 0; i < list.arraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = true;
}
}
if (GUILayout.Button ("Collapse All")) {
for (int i = 0; i < list.arraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = false;
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
for (int i = 0; i < list.arraySize; i++) {
bool expanded = false;
GUILayout.BeginHorizontal ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
if (i < list.arraySize && i >= 0) {
EditorGUILayout.BeginVertical ();
SerializedProperty currentArryElement = list.GetArrayElementAtIndex (i);
EditorGUILayout.PropertyField (currentArryElement, false);
if (currentArryElement.isExpanded) {
expanded = true;
showRangeAttackInfoListElement (currentArryElement);
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
GUILayout.EndHorizontal ();
if (expanded) {
GUILayout.BeginVertical ();
} else {
GUILayout.BeginHorizontal ();
}
if (GUILayout.Button ("x")) {
list.DeleteArrayElementAtIndex (i);
}
if (GUILayout.Button ("v")) {
if (i >= 0) {
list.MoveArrayElement (i, i + 1);
}
}
if (GUILayout.Button ("^")) {
if (i < list.arraySize) {
list.MoveArrayElement (i, i - 1);
}
}
if (expanded) {
GUILayout.EndVertical ();
} else {
GUILayout.EndHorizontal ();
}
GUILayout.EndHorizontal ();
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
}
void showRangeAttackInfoListElement (SerializedProperty list)
{
GUILayout.BeginVertical ("box");
GUILayout.BeginVertical ("Main Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("rangeAttackID"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnRangeAttack"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnDisableRangeAttack"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
void showMeleeWeaponAttackInfoList (SerializedProperty list)
{
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
GUILayout.BeginVertical ("box");
EditorGUILayout.Space ();
GUILayout.Label ("Number Of Elements: \t" + list.arraySize);
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add")) {
list.arraySize++;
}
if (GUILayout.Button ("Clear")) {
list.arraySize = 0;
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Expand All")) {
for (int i = 0; i < list.arraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = true;
}
}
if (GUILayout.Button ("Collapse All")) {
for (int i = 0; i < list.arraySize; i++) {
list.GetArrayElementAtIndex (i).isExpanded = false;
}
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
for (int i = 0; i < list.arraySize; i++) {
bool expanded = false;
GUILayout.BeginHorizontal ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
if (i < list.arraySize && i >= 0) {
EditorGUILayout.BeginVertical ();
SerializedProperty currentArryElement = list.GetArrayElementAtIndex (i);
EditorGUILayout.PropertyField (currentArryElement, false);
if (currentArryElement.isExpanded) {
expanded = true;
showMeleeWeaponAttackInfoListElement (currentArryElement);
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
GUILayout.EndHorizontal ();
if (expanded) {
GUILayout.BeginVertical ();
} else {
GUILayout.BeginHorizontal ();
}
if (GUILayout.Button ("x")) {
list.DeleteArrayElementAtIndex (i);
}
if (GUILayout.Button ("v")) {
if (i >= 0) {
list.MoveArrayElement (i, i + 1);
}
}
if (GUILayout.Button ("^")) {
if (i < list.arraySize) {
list.MoveArrayElement (i, i - 1);
}
}
if (expanded) {
GUILayout.EndVertical ();
} else {
GUILayout.EndHorizontal ();
}
GUILayout.EndHorizontal ();
}
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
}
void showMeleeWeaponAttackInfoListElement (SerializedProperty list)
{
GUILayout.BeginVertical ("box");
GUILayout.BeginVertical ("Main Settings", "window");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("ID"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("mainMeleeWeaponInfo"));
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
void showSimpleList (SerializedProperty list, string listName, bool showAddClearButtons)
{
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide " + listName, buttonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
EditorGUILayout.Space ();
GUILayout.Label ("Number Of Elements: \t" + list.arraySize);
if (showAddClearButtons) {
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add")) {
list.arraySize++;
}
if (GUILayout.Button ("Clear")) {
list.arraySize = 0;
}
GUILayout.EndHorizontal ();
}
EditorGUILayout.Space ();
for (int i = 0; i < list.arraySize; i++) {
GUILayout.BeginHorizontal ();
if (i < list.arraySize && i >= 0) {
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), new GUIContent ("", null, ""), false);
}
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("x")) {
list.DeleteArrayElementAtIndex (i);
return;
}
if (GUILayout.Button ("v")) {
if (i >= 0) {
list.MoveArrayElement (i, i + 1);
}
}
if (GUILayout.Button ("^")) {
if (i < list.arraySize) {
list.MoveArrayElement (i, i - 1);
}
}
GUILayout.EndHorizontal ();
GUILayout.EndHorizontal ();
}
}
}
}
#endif