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

2095 lines
79 KiB
C#

using UnityEngine;
using System.Collections;
using static health;
using UnityEngine.Events;
#if UNITY_EDITOR
using UnityEditor;
[CustomEditor (typeof (health))]
[CanEditMultipleObjects]
public class healthEditor : Editor
{
SerializedProperty invincible;
SerializedProperty healthAmount;
SerializedProperty maxHealthAmount;
SerializedProperty generalDamageMultiplerEnabled;
SerializedProperty generalDamageMultiplerActive;
SerializedProperty generalDamageMultiplier;
SerializedProperty regenerateHealth;
SerializedProperty constantRegenerate;
SerializedProperty regenerateTime;
SerializedProperty regenerateSpeed;
SerializedProperty regenerateAmount;
SerializedProperty currentID;
SerializedProperty dead;
SerializedProperty sedateActive;
SerializedProperty currentSedateDuration;
SerializedProperty useShield;
SerializedProperty mainShieldSystem;
SerializedProperty playerStatsManager;
SerializedProperty healthStatName;
SerializedProperty maxHealthStatName;
SerializedProperty placeToShootActive;
SerializedProperty placeToShoot;
SerializedProperty checkDamageReceiverOnChildrenTransform;
SerializedProperty damagePrefab;
SerializedProperty mainDamageReceiver;
SerializedProperty ragdollManager;
SerializedProperty damageInScreenManager;
SerializedProperty mainInventoryCharacterCustomizationSystem;
SerializedProperty showDamageDeadSettings;
SerializedProperty useEventOnDamageEnabled;
SerializedProperty eventOnDamage;
SerializedProperty useEventOnDamageWithWeakSpotTransform;
SerializedProperty eventOnDamageWithWeakSpotTransform;
SerializedProperty useEventOnDamageWithAttacker;
SerializedProperty eventOnDamageWithAttacker;
SerializedProperty useEventOnDamageWithAmount;
SerializedProperty eventOnDamageWithAmount;
SerializedProperty useExtraDamageFunctions;
SerializedProperty extraDamageFunctionList;
SerializedProperty useEventOnDamageShield;
SerializedProperty eventOnDamageShield;
SerializedProperty useEventOnDamageShieldWithAttacker;
SerializedProperty eventOnDamageShieldWithAttacker;
SerializedProperty deadFuncionCall;
SerializedProperty useExtraDeadFunctions;
SerializedProperty delayInExtraDeadFunctions;
SerializedProperty extraDeadFunctionCall;
SerializedProperty useEventWithAttackerOnDeath;
SerializedProperty eventWithAttackerOnDeath;
SerializedProperty resurrectFunctionCall;
SerializedProperty resurrectAfterDelayEnabled;
SerializedProperty resurrectDelay;
SerializedProperty eventToResurrectAfterDelay;
SerializedProperty useImpactSurface;
SerializedProperty eventToSendCurrentHealthAmount;
SerializedProperty impactDecalList;
SerializedProperty impactDecalIndex;
SerializedProperty impactDecalName;
SerializedProperty mainDecalManagerName;
SerializedProperty showSettings;
SerializedProperty showAdvancedSettings;
SerializedProperty showDebugSettings;
SerializedProperty healthSlider;
SerializedProperty healthSliderText;
SerializedProperty useCircleHealthSlider;
SerializedProperty circleHealthSlider;
SerializedProperty hideHealthSliderWhenNotDamageReceived;
SerializedProperty timeToHideHealthSliderAfterDamage;
SerializedProperty mainHealthSliderParent;
SerializedProperty hiddenHealthSliderParent;
SerializedProperty mainHealthSliderTransform;
SerializedProperty useHealthSlider;
SerializedProperty enemyHealthSlider;
SerializedProperty useHealthSlideInfoOnScreen;
SerializedProperty sliderOffset;
SerializedProperty allyName;
SerializedProperty allySliderColor;
SerializedProperty enemyName;
SerializedProperty enemySliderColor;
SerializedProperty nameTextColor;
SerializedProperty enemyTag;
SerializedProperty friendTag;
SerializedProperty removeHealthBarSliderOnDeath;
SerializedProperty healthBarSliderActiveOnStart;
SerializedProperty setHealthBarAsNotVisibleAtStart;
SerializedProperty notHuman;
SerializedProperty useWeakSpots;
SerializedProperty showWeakSpotsInScannerMode;
SerializedProperty useHealthAmountOnSpotEnabled;
SerializedProperty scorchMarkPrefab;
SerializedProperty layer;
SerializedProperty weakSpotMesh;
SerializedProperty weakSpotMeshAlphaValue;
SerializedProperty haveRagdoll;
SerializedProperty activateRagdollOnDamageReceived;
SerializedProperty minDamageToEnableRagdoll;
SerializedProperty ragdollEvent;
SerializedProperty allowPushCharacterOnExplosions;
SerializedProperty ragdollCanReceiveDamageOnImpact;
SerializedProperty receiveDamageEvenDead;
SerializedProperty canBeSedated;
SerializedProperty awakeOnDamageIfSedated;
SerializedProperty useEventOnSedate;
SerializedProperty sedateStartEvent;
SerializedProperty sedateEndEvent;
SerializedProperty receiveDamageFromCollisionsEnabled;
SerializedProperty minTimeToReceiveDamageOnImpact;
SerializedProperty minVelocityToReceiveDamageOnImpact;
SerializedProperty receiveDamageOnImpactMultiplier;
SerializedProperty showGizmo;
SerializedProperty gizmoLabelColor;
SerializedProperty gizmoRadius;
SerializedProperty alphaColor;
SerializedProperty labelTextSize;
SerializedProperty weakSpots;
SerializedProperty addDamageReceiversToCustomTransformList;
SerializedProperty customTransformListDamageReceiver;
SerializedProperty useEventOnHealthValueList;
SerializedProperty eventOnHealthValueList;
SerializedProperty useDamageTypeCheck;
SerializedProperty checkOnlyDamageTypesOnDamageReceived;
SerializedProperty damageTypeInfoList;
SerializedProperty showDamageReceivedDebugInfo;
SerializedProperty healthAmountToTakeOnEditor;
SerializedProperty healthAmountToGiveOnEditor;
SerializedProperty blockDamageActive;
SerializedProperty blockDamageProtectionAmount;
SerializedProperty useEventsOnDamageBlocked;
SerializedProperty eventOnDamageBlocked;
SerializedProperty useDamageHitReaction;
SerializedProperty mainDamageHitReactionSystem;
SerializedProperty debugDamageSourceTransform;
SerializedProperty objectIsCharacter;
SerializedProperty useEventsOnInvincibleStateChange;
SerializedProperty eventOnInvicibleOn;
SerializedProperty eventOnInvicibleOff;
SerializedProperty useEventOnDamageReceivedWithTemporalInvincibility;
SerializedProperty eventOnDamageReceivedWithTemporalInvincibility;
SerializedProperty sendAttackerOnEventDamageReceivedWithTemporalInvincibility;
SerializedProperty eventToSendAttackerOnDamageReceivedWithTemporalInvincibility;
SerializedProperty maxDelayBetweenDamageReceivedAndInvincibilityStateActive;
SerializedProperty sendInfoToCharacterCustomizationOnDamageEnabled;
SerializedProperty mainManagerName;
SerializedProperty ignoreUseHealthAmountOnSpot;
SerializedProperty damageTypeExplanation;
SerializedProperty ignoreWeakSpotsActive;
SerializedProperty eventDamageTargetOverTimeDuration;
SerializedProperty useCustomCharacterRadius;
SerializedProperty customCharacterRadius;
health healthManager;
GUIStyle style = new GUIStyle ();
GUIStyle gizmoStyle = new GUIStyle ();
GUIStyle buttonStyle = new GUIStyle ();
GUIStyle listButtonStyle = new GUIStyle ();
Color defBackgroundColor;
string label;
string isDead;
string sedateActiveText;
bool expanded;
void OnEnable ()
{
invincible = serializedObject.FindProperty ("invincible");
healthAmount = serializedObject.FindProperty ("healthAmount");
maxHealthAmount = serializedObject.FindProperty ("maxHealthAmount");
generalDamageMultiplerEnabled = serializedObject.FindProperty ("generalDamageMultiplerEnabled");
generalDamageMultiplerActive = serializedObject.FindProperty ("generalDamageMultiplerActive");
generalDamageMultiplier = serializedObject.FindProperty ("generalDamageMultiplier");
regenerateHealth = serializedObject.FindProperty ("regenerateHealth");
constantRegenerate = serializedObject.FindProperty ("constantRegenerate");
regenerateTime = serializedObject.FindProperty ("regenerateTime");
regenerateSpeed = serializedObject.FindProperty ("regenerateSpeed");
regenerateAmount = serializedObject.FindProperty ("regenerateAmount");
currentID = serializedObject.FindProperty ("currentID");
dead = serializedObject.FindProperty ("dead");
sedateActive = serializedObject.FindProperty ("sedateActive");
currentSedateDuration = serializedObject.FindProperty ("currentSedateDuration");
useShield = serializedObject.FindProperty ("useShield");
mainShieldSystem = serializedObject.FindProperty ("mainShieldSystem");
playerStatsManager = serializedObject.FindProperty ("playerStatsManager");
healthStatName = serializedObject.FindProperty ("healthStatName");
maxHealthStatName = serializedObject.FindProperty ("maxHealthStatName");
placeToShootActive = serializedObject.FindProperty ("placeToShootActive");
placeToShoot = serializedObject.FindProperty ("placeToShoot");
checkDamageReceiverOnChildrenTransform = serializedObject.FindProperty ("checkDamageReceiverOnChildrenTransform");
damagePrefab = serializedObject.FindProperty ("damagePrefab");
mainDamageReceiver = serializedObject.FindProperty ("mainDamageReceiver");
mainInventoryCharacterCustomizationSystem = serializedObject.FindProperty ("mainInventoryCharacterCustomizationSystem");
ragdollManager = serializedObject.FindProperty ("ragdollManager");
damageInScreenManager = serializedObject.FindProperty ("damageInScreenManager");
showDamageDeadSettings = serializedObject.FindProperty ("showDamageDeadSettings");
useEventOnDamageEnabled = serializedObject.FindProperty ("useEventOnDamageEnabled");
eventOnDamage = serializedObject.FindProperty ("eventOnDamage");
useEventOnDamageWithWeakSpotTransform = serializedObject.FindProperty ("useEventOnDamageWithWeakSpotTransform");
eventOnDamageWithWeakSpotTransform = serializedObject.FindProperty ("eventOnDamageWithWeakSpotTransform");
useEventOnDamageWithAttacker = serializedObject.FindProperty ("useEventOnDamageWithAttacker");
eventOnDamageWithAttacker = serializedObject.FindProperty ("eventOnDamageWithAttacker");
useEventOnDamageWithAmount = serializedObject.FindProperty ("useEventOnDamageWithAmount");
eventOnDamageWithAmount = serializedObject.FindProperty ("eventOnDamageWithAmount");
useExtraDamageFunctions = serializedObject.FindProperty ("useExtraDamageFunctions");
extraDamageFunctionList = serializedObject.FindProperty ("extraDamageFunctionList");
useEventOnDamageShield = serializedObject.FindProperty ("useEventOnDamageShield");
eventOnDamageShield = serializedObject.FindProperty ("eventOnDamageShield");
useEventOnDamageShieldWithAttacker = serializedObject.FindProperty ("useEventOnDamageShieldWithAttacker");
eventOnDamageShieldWithAttacker = serializedObject.FindProperty ("eventOnDamageShieldWithAttacker");
deadFuncionCall = serializedObject.FindProperty ("deadFuncionCall");
useExtraDeadFunctions = serializedObject.FindProperty ("useExtraDeadFunctions");
delayInExtraDeadFunctions = serializedObject.FindProperty ("delayInExtraDeadFunctions");
extraDeadFunctionCall = serializedObject.FindProperty ("extraDeadFunctionCall");
useEventWithAttackerOnDeath = serializedObject.FindProperty ("useEventWithAttackerOnDeath");
eventWithAttackerOnDeath = serializedObject.FindProperty ("eventWithAttackerOnDeath");
resurrectFunctionCall = serializedObject.FindProperty ("resurrectFunctionCall");
resurrectAfterDelayEnabled = serializedObject.FindProperty ("resurrectAfterDelayEnabled");
resurrectDelay = serializedObject.FindProperty ("resurrectDelay");
eventToResurrectAfterDelay = serializedObject.FindProperty ("eventToResurrectAfterDelay");
useImpactSurface = serializedObject.FindProperty ("useImpactSurface");
eventToSendCurrentHealthAmount = serializedObject.FindProperty ("eventToSendCurrentHealthAmount");
impactDecalList = serializedObject.FindProperty ("impactDecalList");
impactDecalIndex = serializedObject.FindProperty ("impactDecalIndex");
impactDecalName = serializedObject.FindProperty ("impactDecalName");
mainDecalManagerName = serializedObject.FindProperty ("mainDecalManagerName");
showSettings = serializedObject.FindProperty ("showSettings");
showAdvancedSettings = serializedObject.FindProperty ("showAdvancedSettings");
showDebugSettings = serializedObject.FindProperty ("showDebugSettings");
healthSlider = serializedObject.FindProperty ("healthSlider");
healthSliderText = serializedObject.FindProperty ("healthSliderText");
useCircleHealthSlider = serializedObject.FindProperty ("useCircleHealthSlider");
circleHealthSlider = serializedObject.FindProperty ("circleHealthSlider");
hideHealthSliderWhenNotDamageReceived = serializedObject.FindProperty ("hideHealthSliderWhenNotDamageReceived");
timeToHideHealthSliderAfterDamage = serializedObject.FindProperty ("timeToHideHealthSliderAfterDamage");
mainHealthSliderParent = serializedObject.FindProperty ("mainHealthSliderParent");
hiddenHealthSliderParent = serializedObject.FindProperty ("hiddenHealthSliderParent");
mainHealthSliderTransform = serializedObject.FindProperty ("mainHealthSliderTransform");
useHealthSlider = serializedObject.FindProperty ("settings.useHealthSlider");
enemyHealthSlider = serializedObject.FindProperty ("settings.enemyHealthSlider");
useHealthSlideInfoOnScreen = serializedObject.FindProperty ("useHealthSlideInfoOnScreen");
sliderOffset = serializedObject.FindProperty ("settings.sliderOffset");
allyName = serializedObject.FindProperty ("settings.allyName");
allySliderColor = serializedObject.FindProperty ("settings.allySliderColor");
enemyName = serializedObject.FindProperty ("settings.enemyName");
enemySliderColor = serializedObject.FindProperty ("settings.enemySliderColor");
nameTextColor = serializedObject.FindProperty ("settings.nameTextColor");
enemyTag = serializedObject.FindProperty ("enemyTag");
friendTag = serializedObject.FindProperty ("friendTag");
removeHealthBarSliderOnDeath = serializedObject.FindProperty ("settings.removeHealthBarSliderOnDeath");
healthBarSliderActiveOnStart = serializedObject.FindProperty ("settings.healthBarSliderActiveOnStart");
setHealthBarAsNotVisibleAtStart = serializedObject.FindProperty ("setHealthBarAsNotVisibleAtStart");
notHuman = serializedObject.FindProperty ("advancedSettings.notHuman");
useWeakSpots = serializedObject.FindProperty ("advancedSettings.useWeakSpots");
showWeakSpotsInScannerMode = serializedObject.FindProperty ("showWeakSpotsInScannerMode");
useHealthAmountOnSpotEnabled = serializedObject.FindProperty ("advancedSettings.useHealthAmountOnSpotEnabled");
scorchMarkPrefab = serializedObject.FindProperty ("scorchMarkPrefab");
layer = serializedObject.FindProperty ("settings.layer");
weakSpotMesh = serializedObject.FindProperty ("weakSpotMesh");
weakSpotMeshAlphaValue = serializedObject.FindProperty ("weakSpotMeshAlphaValue");
haveRagdoll = serializedObject.FindProperty ("advancedSettings.haveRagdoll");
activateRagdollOnDamageReceived = serializedObject.FindProperty ("advancedSettings.activateRagdollOnDamageReceived");
minDamageToEnableRagdoll = serializedObject.FindProperty ("advancedSettings.minDamageToEnableRagdoll");
ragdollEvent = serializedObject.FindProperty ("advancedSettings.ragdollEvent");
allowPushCharacterOnExplosions = serializedObject.FindProperty ("advancedSettings.allowPushCharacterOnExplosions");
ragdollCanReceiveDamageOnImpact = serializedObject.FindProperty ("advancedSettings.ragdollCanReceiveDamageOnImpact");
receiveDamageEvenDead = serializedObject.FindProperty ("receiveDamageEvenDead");
canBeSedated = serializedObject.FindProperty ("canBeSedated");
awakeOnDamageIfSedated = serializedObject.FindProperty ("awakeOnDamageIfSedated");
useEventOnSedate = serializedObject.FindProperty ("useEventOnSedate");
sedateStartEvent = serializedObject.FindProperty ("sedateStartEvent");
sedateEndEvent = serializedObject.FindProperty ("sedateEndEvent");
receiveDamageFromCollisionsEnabled = serializedObject.FindProperty ("receiveDamageFromCollisionsEnabled");
minTimeToReceiveDamageOnImpact = serializedObject.FindProperty ("minTimeToReceiveDamageOnImpact");
minVelocityToReceiveDamageOnImpact = serializedObject.FindProperty ("minVelocityToReceiveDamageOnImpact");
receiveDamageOnImpactMultiplier = serializedObject.FindProperty ("receiveDamageOnImpactMultiplier");
showGizmo = serializedObject.FindProperty ("advancedSettings.showGizmo");
gizmoLabelColor = serializedObject.FindProperty ("advancedSettings.gizmoLabelColor");
gizmoRadius = serializedObject.FindProperty ("advancedSettings.gizmoRadius");
alphaColor = serializedObject.FindProperty ("advancedSettings.alphaColor");
labelTextSize = serializedObject.FindProperty ("advancedSettings.labelTextSize");
weakSpots = serializedObject.FindProperty ("advancedSettings.weakSpots");
addDamageReceiversToCustomTransformList = serializedObject.FindProperty ("addDamageReceiversToCustomTransformList");
customTransformListDamageReceiver = serializedObject.FindProperty ("customTransformListDamageReceiver");
useEventOnHealthValueList = serializedObject.FindProperty ("useEventOnHealthValueList");
eventOnHealthValueList = serializedObject.FindProperty ("eventOnHealthValueList");
useDamageTypeCheck = serializedObject.FindProperty ("useDamageTypeCheck");
checkOnlyDamageTypesOnDamageReceived = serializedObject.FindProperty ("checkOnlyDamageTypesOnDamageReceived");
damageTypeInfoList = serializedObject.FindProperty ("damageTypeInfoList");
showDamageReceivedDebugInfo = serializedObject.FindProperty ("showDamageReceivedDebugInfo");
healthAmountToTakeOnEditor = serializedObject.FindProperty ("healthAmountToTakeOnEditor");
healthAmountToGiveOnEditor = serializedObject.FindProperty ("healthAmountToGiveOnEditor");
blockDamageActive = serializedObject.FindProperty ("blockDamageActive");
blockDamageProtectionAmount = serializedObject.FindProperty ("blockDamageProtectionAmount");
useEventsOnDamageBlocked = serializedObject.FindProperty ("useEventsOnDamageBlocked");
eventOnDamageBlocked = serializedObject.FindProperty ("eventOnDamageBlocked");
useDamageHitReaction = serializedObject.FindProperty ("useDamageHitReaction");
mainDamageHitReactionSystem = serializedObject.FindProperty ("mainDamageHitReactionSystem");
debugDamageSourceTransform = serializedObject.FindProperty ("debugDamageSourceTransform");
objectIsCharacter = serializedObject.FindProperty ("objectIsCharacter");
useEventsOnInvincibleStateChange = serializedObject.FindProperty ("useEventsOnInvincibleStateChange");
eventOnInvicibleOn = serializedObject.FindProperty ("eventOnInvicibleOn");
eventOnInvicibleOff = serializedObject.FindProperty ("eventOnInvicibleOff");
eventOnDamageReceivedWithTemporalInvincibility = serializedObject.FindProperty ("eventOnDamageReceivedWithTemporalInvincibility");
maxDelayBetweenDamageReceivedAndInvincibilityStateActive = serializedObject.FindProperty ("maxDelayBetweenDamageReceivedAndInvincibilityStateActive");
useEventOnDamageReceivedWithTemporalInvincibility = serializedObject.FindProperty ("useEventOnDamageReceivedWithTemporalInvincibility");
sendAttackerOnEventDamageReceivedWithTemporalInvincibility = serializedObject.FindProperty ("sendAttackerOnEventDamageReceivedWithTemporalInvincibility");
eventToSendAttackerOnDamageReceivedWithTemporalInvincibility = serializedObject.FindProperty ("eventToSendAttackerOnDamageReceivedWithTemporalInvincibility");
sendInfoToCharacterCustomizationOnDamageEnabled = serializedObject.FindProperty ("sendInfoToCharacterCustomizationOnDamageEnabled");
mainManagerName = serializedObject.FindProperty ("mainManagerName");
ignoreUseHealthAmountOnSpot = serializedObject.FindProperty ("ignoreUseHealthAmountOnSpot");
damageTypeExplanation = serializedObject.FindProperty ("damageTypeExplanation");
ignoreWeakSpotsActive = serializedObject.FindProperty ("ignoreWeakSpotsActive");
eventDamageTargetOverTimeDuration = serializedObject.FindProperty ("eventDamageTargetOverTimeDuration");
useCustomCharacterRadius = serializedObject.FindProperty ("useCustomCharacterRadius");
customCharacterRadius = serializedObject.FindProperty ("customCharacterRadius");
healthManager = (health)target;
}
void OnSceneGUI ()
{
if (healthManager.advancedSettings.showGizmo) {
gizmoStyle.normal.textColor = healthManager.advancedSettings.gizmoLabelColor;
gizmoStyle.alignment = TextAnchor.MiddleCenter;
gizmoStyle.fontSize = healthManager.advancedSettings.labelTextSize;
for (int i = 0; i < healthManager.advancedSettings.weakSpots.Count; i++) {
if (healthManager.advancedSettings.weakSpots [i].spotTransform != null) {
label = healthManager.advancedSettings.weakSpots [i].name;
if (healthManager.advancedSettings.weakSpots [i].killedWithOneShoot) {
if (healthManager.advancedSettings.weakSpots [i].needMinValueToBeKilled) {
label += "\nOne Shoot\n >=" + healthManager.advancedSettings.weakSpots [i].minValueToBeKilled;
} else {
label += "\nOne Shoot";
}
} else {
label += "\nx" + healthManager.advancedSettings.weakSpots [i].damageMultiplier;
}
if (healthManager.advancedSettings.weakSpots [i].useHealthAmountOnSpot) {
label += "\n" + healthManager.advancedSettings.weakSpots [i].healhtAmountOnSpot;
}
Handles.Label (healthManager.advancedSettings.weakSpots [i].spotTransform.position, label, gizmoStyle);
}
}
if (healthManager.settings.enemyHealthSlider != null) {
gizmoStyle.normal.textColor = healthManager.advancedSettings.gizmoLabelColor;
gizmoStyle.alignment = TextAnchor.MiddleCenter;
Handles.Label (healthManager.transform.position + healthManager.settings.sliderOffset, "Health Slider", gizmoStyle);
}
}
}
public override void OnInspectorGUI ()
{
EditorGUI.BeginChangeCheck ();
EditorGUILayout.Space ();
listButtonStyle = new GUIStyle (GUI.skin.button);
listButtonStyle.fontStyle = FontStyle.Bold;
listButtonStyle.fontSize = 12;
style.fontStyle = FontStyle.Bold;
GUILayout.BeginVertical ("Main Health Settings", "window");
EditorGUILayout.PropertyField (invincible);
if (!invincible.boolValue) {
EditorGUILayout.PropertyField (healthAmount);
EditorGUILayout.PropertyField (maxHealthAmount);
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Damage Multiplier Settings", "window");
EditorGUILayout.PropertyField (generalDamageMultiplerEnabled);
if (generalDamageMultiplerEnabled.boolValue) {
EditorGUILayout.PropertyField (generalDamageMultiplerActive);
EditorGUILayout.PropertyField (generalDamageMultiplier);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Regenerate Health Settings", "window");
EditorGUILayout.PropertyField (regenerateHealth);
if (regenerateHealth.boolValue) {
EditorGUILayout.PropertyField (constantRegenerate);
EditorGUILayout.PropertyField (regenerateTime);
if (constantRegenerate.boolValue) {
EditorGUILayout.PropertyField (regenerateSpeed);
} else {
EditorGUILayout.PropertyField (regenerateAmount);
}
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Health State", "window");
GUILayout.Label ("Max Health\t\t\t" + maxHealthAmount.floatValue);
GUILayout.Label ("Health ID\t\t\t" + currentID.intValue);
isDead = "NO";
if (dead.boolValue) {
isDead = "YES";
}
GUILayout.Label ("Is Dead\t\t\t\t" + isDead);
sedateActiveText = "NO";
if (sedateActive.boolValue) {
sedateActiveText = "YES";
}
GUILayout.Label ("Is Sedated\t\t\t" + sedateActiveText);
GUILayout.Label ("Sedate Duration\t\t\t" + currentSedateDuration.floatValue);
GUILayout.Label ("Ignore Weak Spots\t\t" + ignoreWeakSpotsActive.boolValue);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Main Shield Settings", "window");
EditorGUILayout.PropertyField (useShield);
if (useShield.boolValue) {
EditorGUILayout.PropertyField (mainShieldSystem);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Health Stat Settings", "window");
EditorGUILayout.PropertyField (playerStatsManager);
EditorGUILayout.PropertyField (healthStatName);
EditorGUILayout.PropertyField (maxHealthStatName);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Damage Hit Reaction Settings", "window");
EditorGUILayout.PropertyField (useDamageHitReaction);
EditorGUILayout.PropertyField (mainDamageHitReactionSystem);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Block Damage Settings", "window");
GUILayout.Label ("Block Damage Active\t\t " + blockDamageActive.boolValue);
GUILayout.Label ("Block Damage Amount\t " + blockDamageProtectionAmount.floatValue);
EditorGUILayout.PropertyField (useEventsOnDamageBlocked);
if (useEventsOnDamageBlocked.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnDamageBlocked);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Others Settings", "window");
EditorGUILayout.PropertyField (objectIsCharacter);
EditorGUILayout.PropertyField (placeToShootActive);
if (placeToShootActive.boolValue) {
EditorGUILayout.PropertyField (placeToShoot);
}
EditorGUILayout.PropertyField (checkDamageReceiverOnChildrenTransform);
EditorGUILayout.PropertyField (damagePrefab);
EditorGUILayout.PropertyField (mainManagerName);
EditorGUILayout.PropertyField (sendInfoToCharacterCustomizationOnDamageEnabled);
EditorGUILayout.PropertyField (ignoreUseHealthAmountOnSpot);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useCustomCharacterRadius);
if (useCustomCharacterRadius.boolValue) {
EditorGUILayout.PropertyField (customCharacterRadius);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Impact Surface Settings", "window", GUILayout.Height (30));
EditorGUILayout.PropertyField (useImpactSurface);
EditorGUILayout.PropertyField (mainDecalManagerName);
EditorGUILayout.Space ();
if (useImpactSurface.boolValue) {
if (impactDecalList.arraySize > 0) {
impactDecalIndex.intValue = EditorGUILayout.Popup ("Decal Impact Type",
impactDecalIndex.intValue, healthManager.impactDecalList);
impactDecalName.stringValue = healthManager.impactDecalList [impactDecalIndex.intValue];
}
EditorGUILayout.Space ();
if (GUILayout.Button ("Update Decal Impact List")) {
healthManager.getImpactListInfo ();
}
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Damage Receiver Settings", "window");
if (GUILayout.Button ("Update Character Damage Receivers")) {
healthManager.updateCharacterDamageReceiverOnObject ();
}
EditorGUILayout.Space ();
if (GUILayout.Button ("Add Damage Receiver To Object")) {
healthManager.addDamageReceiverToObject ();
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
defBackgroundColor = GUI.backgroundColor;
EditorGUILayout.BeginHorizontal ();
if (showDamageDeadSettings.boolValue) {
GUI.backgroundColor = Color.gray;
} else {
GUI.backgroundColor = defBackgroundColor;
}
buttonStyle = new GUIStyle (GUI.skin.button);
buttonStyle.fontStyle = FontStyle.Bold;
buttonStyle.fontSize = 16;
if (GUILayout.Button ("Show Damage/Death/Events Settings", buttonStyle)) {
showDamageDeadSettings.boolValue = !showDamageDeadSettings.boolValue;
}
GUI.backgroundColor = defBackgroundColor;
EditorGUILayout.EndHorizontal ();
if (showDamageDeadSettings.boolValue) {
style.fontStyle = FontStyle.Bold;
style.fontSize = 30;
style.alignment = TextAnchor.MiddleCenter;
EditorGUILayout.Space ();
EditorGUILayout.Space ();
EditorGUILayout.LabelField ("EVENTS SETTINGS", style);
EditorGUILayout.Space ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Damage Event Settings", "window");
EditorGUILayout.PropertyField (useEventOnDamageEnabled);
EditorGUILayout.Space ();
if (useEventOnDamageEnabled.boolValue) {
EditorGUILayout.PropertyField (eventOnDamage);
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useEventOnDamageWithAttacker);
if (useEventOnDamageWithAttacker.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnDamageWithAttacker);
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useEventOnDamageWithAmount);
if (useEventOnDamageWithAmount.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnDamageWithAmount);
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useEventOnDamageWithWeakSpotTransform);
if (useEventOnDamageWithWeakSpotTransform.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnDamageWithWeakSpotTransform);
}
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Damage Extra Event Settings", "window");
EditorGUILayout.PropertyField (useExtraDamageFunctions);
if (useExtraDamageFunctions.boolValue) {
EditorGUILayout.Space ();
getExtraDamageFunctionList (extraDamageFunctionList);
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventDamageTargetOverTimeDuration);
GUILayout.EndVertical ();
GUILayout.EndVertical ();
if (useShield.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Shield Damage Event Settings", "window");
EditorGUILayout.PropertyField (useEventOnDamageShield);
if (useEventOnDamageShield.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnDamageShield);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useEventOnDamageShieldWithAttacker);
if (useEventOnDamageShieldWithAttacker.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnDamageShieldWithAttacker);
}
}
GUILayout.EndVertical ();
}
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Death Event Settings", "window");
EditorGUILayout.PropertyField (deadFuncionCall);
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Death Extra Event Settings", "window");
EditorGUILayout.PropertyField (useExtraDeadFunctions);
EditorGUILayout.Space ();
if (useExtraDeadFunctions.boolValue) {
EditorGUILayout.PropertyField (delayInExtraDeadFunctions);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (extraDeadFunctionCall);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Event With Attacker On Death Settings", "window");
EditorGUILayout.PropertyField (useEventWithAttackerOnDeath);
if (useEventWithAttackerOnDeath.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventWithAttackerOnDeath);
}
GUILayout.EndVertical ();
GUILayout.EndVertical ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Resurrect Event Settings", "window");
EditorGUILayout.PropertyField (resurrectFunctionCall);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Resurrect After Delay Event Settings", "window");
EditorGUILayout.PropertyField (resurrectAfterDelayEnabled);
if (resurrectAfterDelayEnabled.boolValue) {
EditorGUILayout.PropertyField (resurrectDelay);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventToResurrectAfterDelay);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Invincible State Change Settings", "window");
EditorGUILayout.PropertyField (useEventsOnInvincibleStateChange);
if (useEventsOnInvincibleStateChange.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnInvicibleOn);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnInvicibleOff);
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useEventOnDamageReceivedWithTemporalInvincibility);
if (useEventOnDamageReceivedWithTemporalInvincibility.boolValue) {
EditorGUILayout.PropertyField (maxDelayBetweenDamageReceivedAndInvincibilityStateActive);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventOnDamageReceivedWithTemporalInvincibility);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (sendAttackerOnEventDamageReceivedWithTemporalInvincibility);
if (sendAttackerOnEventDamageReceivedWithTemporalInvincibility.boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (eventToSendAttackerOnDamageReceivedWithTemporalInvincibility);
}
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Events To Send Stats On Save", "window");
EditorGUILayout.PropertyField (eventToSendCurrentHealthAmount);
GUILayout.EndVertical ();
}
EditorGUILayout.Space ();
EditorGUILayout.Space ();
defBackgroundColor = GUI.backgroundColor;
buttonStyle = new GUIStyle (GUI.skin.button);
buttonStyle.fontStyle = FontStyle.Bold;
buttonStyle.fontSize = 16;
EditorGUILayout.BeginHorizontal ();
if (showSettings.boolValue) {
GUI.backgroundColor = Color.gray;
} else {
GUI.backgroundColor = defBackgroundColor;
}
if (GUILayout.Button ("Settings", buttonStyle)) {
showSettings.boolValue = !showSettings.boolValue;
}
if (showAdvancedSettings.boolValue) {
GUI.backgroundColor = Color.gray;
} else {
GUI.backgroundColor = defBackgroundColor;
}
if (GUILayout.Button ("Advanced Settings", buttonStyle)) {
showAdvancedSettings.boolValue = !showAdvancedSettings.boolValue;
}
GUI.backgroundColor = defBackgroundColor;
EditorGUILayout.EndHorizontal ();
if (showSettings.boolValue) {
style.fontStyle = FontStyle.Bold;
style.fontSize = 30;
style.alignment = TextAnchor.MiddleCenter;
EditorGUILayout.Space ();
EditorGUILayout.Space ();
EditorGUILayout.LabelField ("SETTINGS", style);
EditorGUILayout.Space ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("box");
EditorGUILayout.Space ();
GUI.color = Color.cyan;
EditorGUILayout.HelpBox ("Player Settings", MessageType.None);
GUI.color = Color.white;
EditorGUILayout.Space ();
GUILayout.BeginVertical ("HUD Health Slider Settings", "window");
EditorGUILayout.PropertyField (healthSlider);
if (healthSlider.objectReferenceValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (useCircleHealthSlider);
if (useCircleHealthSlider.boolValue) {
EditorGUILayout.PropertyField (circleHealthSlider);
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (healthSliderText);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (hideHealthSliderWhenNotDamageReceived);
if (hideHealthSliderWhenNotDamageReceived.boolValue) {
EditorGUILayout.PropertyField (timeToHideHealthSliderAfterDamage);
EditorGUILayout.PropertyField (mainHealthSliderParent);
EditorGUILayout.PropertyField (hiddenHealthSliderParent);
EditorGUILayout.PropertyField (mainHealthSliderTransform);
}
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUI.color = Color.cyan;
EditorGUILayout.HelpBox ("Health Slider Icon on HUD Settings", MessageType.None);
GUI.color = Color.white;
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Health Slider Settings", "window");
EditorGUILayout.PropertyField (useHealthSlider);
if (useHealthSlider.boolValue) {
EditorGUILayout.PropertyField (enemyHealthSlider, new GUIContent ("Health Slider Prefab"));
EditorGUILayout.PropertyField (sliderOffset);
EditorGUILayout.PropertyField (allyName);
EditorGUILayout.PropertyField (allySliderColor);
EditorGUILayout.PropertyField (enemyName);
EditorGUILayout.PropertyField (enemySliderColor);
EditorGUILayout.PropertyField (nameTextColor);
EditorGUILayout.PropertyField (enemyTag);
EditorGUILayout.PropertyField (friendTag);
EditorGUILayout.PropertyField (removeHealthBarSliderOnDeath);
EditorGUILayout.PropertyField (healthBarSliderActiveOnStart);
EditorGUILayout.PropertyField (setHealthBarAsNotVisibleAtStart);
EditorGUILayout.PropertyField (useHealthSlideInfoOnScreen);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Components", "window");
EditorGUILayout.PropertyField (mainDamageReceiver);
EditorGUILayout.PropertyField (ragdollManager);
EditorGUILayout.PropertyField (damageInScreenManager);
EditorGUILayout.PropertyField (debugDamageSourceTransform);
EditorGUILayout.PropertyField (mainInventoryCharacterCustomizationSystem);
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
if (showAdvancedSettings.boolValue) {
style.fontStyle = FontStyle.Bold;
style.fontSize = 30;
style.alignment = TextAnchor.MiddleCenter;
EditorGUILayout.Space ();
EditorGUILayout.Space ();
EditorGUILayout.LabelField ("ADVANCED SETTINGS", style);
EditorGUILayout.Space ();
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("box");
EditorGUILayout.Space ();
GUI.color = Color.cyan;
EditorGUILayout.HelpBox ("Ragdoll and weak spots Settings", MessageType.None);
GUI.color = Color.white;
EditorGUILayout.Space ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Main Advanced Settings", "window");
EditorGUILayout.PropertyField (notHuman);
EditorGUILayout.PropertyField (showWeakSpotsInScannerMode);
EditorGUILayout.PropertyField (useHealthAmountOnSpotEnabled);
EditorGUILayout.PropertyField (scorchMarkPrefab);
if (scorchMarkPrefab.objectReferenceValue) {
EditorGUILayout.PropertyField (layer);
}
if (showWeakSpotsInScannerMode.boolValue) {
EditorGUILayout.PropertyField (weakSpotMesh);
EditorGUILayout.PropertyField (weakSpotMeshAlphaValue);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Damage On Collision Settings", "window");
EditorGUILayout.PropertyField (receiveDamageFromCollisionsEnabled);
if (receiveDamageFromCollisionsEnabled.boolValue) {
EditorGUILayout.PropertyField (minTimeToReceiveDamageOnImpact);
EditorGUILayout.PropertyField (minVelocityToReceiveDamageOnImpact);
EditorGUILayout.PropertyField (receiveDamageOnImpactMultiplier);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Ragdoll Settings", "window");
EditorGUILayout.PropertyField (haveRagdoll);
if (haveRagdoll.boolValue) {
EditorGUILayout.PropertyField (activateRagdollOnDamageReceived);
if (activateRagdollOnDamageReceived.boolValue) {
EditorGUILayout.PropertyField (minDamageToEnableRagdoll);
EditorGUILayout.PropertyField (ragdollEvent);
EditorGUILayout.Space ();
}
EditorGUILayout.PropertyField (allowPushCharacterOnExplosions);
EditorGUILayout.PropertyField (ragdollCanReceiveDamageOnImpact);
EditorGUILayout.PropertyField (receiveDamageEvenDead);
EditorGUILayout.PropertyField (canBeSedated);
if (canBeSedated.boolValue) {
EditorGUILayout.PropertyField (awakeOnDamageIfSedated);
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Ragdoll Settings", "window");
EditorGUILayout.PropertyField (useEventOnSedate);
if (useEventOnSedate.boolValue) {
EditorGUILayout.PropertyField (sedateStartEvent);
EditorGUILayout.PropertyField (sedateEndEvent);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Damage Receivers Settings", "window");
if (GUILayout.Button ("Add Damage Receivers To Ragdoll")) {
healthManager.addDamageReceiversToRagdoll ();
}
EditorGUILayout.Space ();
if (GUILayout.Button ("Remove Damage Receivers From Ragdoll")) {
healthManager.removeDamageReceiversFromRagdoll ();
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Gizmo Settings", "window");
EditorGUILayout.PropertyField (showGizmo);
if (showGizmo.boolValue) {
EditorGUILayout.PropertyField (gizmoLabelColor);
EditorGUILayout.PropertyField (gizmoRadius);
EditorGUILayout.PropertyField (alphaColor);
EditorGUILayout.PropertyField (labelTextSize);
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
style.fontStyle = FontStyle.Bold;
style.fontSize = 20;
style.alignment = TextAnchor.MiddleCenter;
EditorGUILayout.Space ();
EditorGUILayout.LabelField ("Weak Spots Settings", style);
EditorGUILayout.Space ();
if (GUILayout.Button ("Set New Humanoid Weak Spots")) {
healthManager.setHumanoidWeaKSpots (true);
}
EditorGUILayout.Space ();
if (GUILayout.Button ("Reset Weak Spots Multipliers")) {
healthManager.resetWeakSpotDamageMultipliers ();
}
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Weak Spots List", "window");
EditorGUILayout.PropertyField (useWeakSpots);
if (useWeakSpots.boolValue) {
EditorGUILayout.Space ();
showWeakSpotsList (weakSpots);
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (addDamageReceiversToCustomTransformList);
if (addDamageReceiversToCustomTransformList.boolValue) {
EditorGUILayout.Space ();
showSimpleList (customTransformListDamageReceiver);
EditorGUILayout.Space ();
if (GUILayout.Button ("Add Custom Transform List Damage Receivers")) {
healthManager.setCustomTransformListDamageReceiver ();
}
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
if (GUILayout.Button ("Update Damage Receivers")) {
healthManager.updateDamageReceivers ();
}
EditorGUILayout.Space ();
style.fontStyle = FontStyle.Bold;
style.fontSize = 20;
style.alignment = TextAnchor.MiddleCenter;
EditorGUILayout.Space ();
EditorGUILayout.LabelField ("Health Value Events", style);
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Events On Health Value Settings", "window");
EditorGUILayout.PropertyField (useEventOnHealthValueList);
if (useEventOnHealthValueList.boolValue) {
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Events On Health List", "window");
showEventOnHealthValueList (eventOnHealthValueList);
GUILayout.EndVertical ();
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
style.fontStyle = FontStyle.Bold;
style.fontSize = 20;
style.alignment = TextAnchor.MiddleCenter;
EditorGUILayout.Space ();
EditorGUILayout.LabelField ("Damage Type Settings", style);
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Damage Type ID Settings", "window");
EditorGUILayout.PropertyField (useDamageTypeCheck);
if (useDamageTypeCheck.boolValue) {
EditorGUILayout.PropertyField (checkOnlyDamageTypesOnDamageReceived);
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Damage Type Info List", "window");
showDamageTypeInfoList (damageTypeInfoList);
GUILayout.EndVertical ();
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.EndVertical ();
EditorGUILayout.Space ();
}
EditorGUILayout.Space ();
defBackgroundColor = GUI.backgroundColor;
buttonStyle = new GUIStyle (GUI.skin.button);
buttonStyle.fontStyle = FontStyle.Bold;
buttonStyle.fontSize = 16;
EditorGUILayout.BeginHorizontal ();
if (showDebugSettings.boolValue) {
GUI.backgroundColor = Color.gray;
} else {
GUI.backgroundColor = defBackgroundColor;
}
if (GUILayout.Button ("Debug", buttonStyle)) {
showDebugSettings.boolValue = !showDebugSettings.boolValue;
}
GUI.backgroundColor = defBackgroundColor;
EditorGUILayout.EndHorizontal ();
style.fontStyle = FontStyle.Bold;
style.fontSize = 20;
style.alignment = TextAnchor.MiddleCenter;
EditorGUILayout.Space ();
if (showDebugSettings.boolValue) {
EditorGUILayout.LabelField ("DEBUG INFO", style);
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Debug Options", "window");
EditorGUILayout.PropertyField (showDamageReceivedDebugInfo);
EditorGUILayout.Space ();
if (GUILayout.Button ("Kill Character (In-Game Only)")) {
if (Application.isPlaying) {
healthManager.killByButton ();
}
}
if (haveRagdoll.boolValue) {
EditorGUILayout.Space ();
if (GUILayout.Button ("Push Character (In-Game Only)")) {
if (Application.isPlaying) {
healthManager.pushFullCharacter ();
}
}
EditorGUILayout.Space ();
if (GUILayout.Button ("Activate Ragdoll (In-Game Only)")) {
if (Application.isPlaying) {
healthManager.pushCharacterWithoutForce ();
}
}
EditorGUILayout.Space ();
if (GUILayout.Button ("Resurrect (In-Game Only)")) {
if (Application.isPlaying) {
healthManager.resurrectFromExternalCall ();
}
}
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (healthAmountToTakeOnEditor);
if (GUILayout.Button ("Apply X Damage (In-Game Only)")) {
if (Application.isPlaying) {
healthManager.takeHealth (healthAmountToTakeOnEditor.floatValue);
}
}
EditorGUILayout.Space ();
if (GUILayout.Button ("Apply X Damage With Direction (In-Game Only)")) {
if (Application.isPlaying) {
healthManager.takeDamageFromDebugDamageSourceTransform (healthAmountToTakeOnEditor.floatValue);
}
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (healthAmountToGiveOnEditor);
if (GUILayout.Button ("Apply X Health (In-Game Only)")) {
if (Application.isPlaying) {
healthManager.getHealth (healthAmountToGiveOnEditor.floatValue);
}
}
GUILayout.EndVertical ();
}
EditorGUILayout.Space ();
GUI.backgroundColor = defBackgroundColor;
if (EditorGUI.EndChangeCheck ()) {
serializedObject.ApplyModifiedProperties ();
Repaint ();
}
}
void showListElementInfo (SerializedProperty list, int elementIndex)
{
GUILayout.BeginVertical ("box");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("name"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("spotTransform"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("weakSpotHumanBodybone"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("ignoreWeakSpot"));
EditorGUILayout.Space ();
if (!list.FindPropertyRelative ("killedWithOneShoot").boolValue) {
EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageMultiplier"));
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("killedWithOneShoot"));
if (list.FindPropertyRelative ("killedWithOneShoot").boolValue) {
EditorGUILayout.PropertyField (list.FindPropertyRelative ("needMinValueToBeKilled"));
if (list.FindPropertyRelative ("needMinValueToBeKilled").boolValue) {
EditorGUILayout.PropertyField (list.FindPropertyRelative ("minValueToBeKilled"));
}
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("transformToAttachWeapons"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useBoneTransformToAttachWeapons"));
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Armor Cloth Damage Settings", "window", GUILayout.Height (30));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("sendValueToArmorClothSystemOnDamage"));
if (list.FindPropertyRelative ("sendValueToArmorClothSystemOnDamage").boolValue) {
EditorGUILayout.PropertyField (list.FindPropertyRelative ("armorClothCategoryName"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageMultiplierOnArmorClothPiece"));
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Event On Damage Settings", "window", GUILayout.Height (30));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("sendFunctionWhenDamage"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("sendFunctionWhenDie"));
if (list.FindPropertyRelative ("sendFunctionWhenDamage").boolValue || list.FindPropertyRelative ("sendFunctionWhenDie").boolValue) {
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageFunction"));
}
GUILayout.EndVertical ();
if (useHealthAmountOnSpotEnabled.boolValue) {
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Health Amount On Spot Settings", "window", GUILayout.Height (30));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useHealthAmountOnSpot"));
if (list.FindPropertyRelative ("useHealthAmountOnSpot").boolValue) {
EditorGUILayout.PropertyField (list.FindPropertyRelative ("healhtAmountOnSpot"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("killCharacterOnEmtpyHealthAmountOnSpot"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("ignoreWeakSpotIfHealthEmpty"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnEmtpyHealthAmountOnSpot"));
EditorGUILayout.Space ();
if (GUILayout.Button ("Set Full Damage Spot")) {
if (Application.isPlaying) {
healthManager.damageSpot (elementIndex, list.FindPropertyRelative ("healhtAmountOnSpot").floatValue);
}
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCustomStateHealthAmountOnSpotEnabled"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("currentCustomStateHealthAmountOnSpotID"));
showCustomStateHealthAmountOnSpotInfoList (list.FindPropertyRelative ("customStateHealthAmountOnSpotInfoList"));
}
GUILayout.EndVertical ();
}
EditorGUILayout.Space ();
GUILayout.BeginVertical ("Critical Damage Settings", "window", GUILayout.Height (30));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCriticalDamageSpot"));
if (list.FindPropertyRelative ("useCriticalDamageSpot").boolValue) {
EditorGUILayout.Space ();
GUILayout.Label (new GUIContent ("Critical Damage Probability"), EditorStyles.boldLabel);
GUILayout.BeginHorizontal ();
Vector2 criticalDamageProbability = list.FindPropertyRelative ("criticalDamageProbability").vector2Value;
criticalDamageProbability.x = EditorGUILayout.FloatField (criticalDamageProbability.x, GUILayout.MaxWidth (50));
EditorGUILayout.MinMaxSlider (ref criticalDamageProbability.x, ref criticalDamageProbability.y, 0, 100);
criticalDamageProbability.y = EditorGUILayout.FloatField (criticalDamageProbability.y, GUILayout.MaxWidth (50));
list.FindPropertyRelative ("criticalDamageProbability").vector2Value = criticalDamageProbability;
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageMultiplierOnCritical"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("killTargetOnCritical"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("removeAllHealthAmountOnSpotOnCritical"));
}
GUILayout.EndVertical ();
EditorGUILayout.Space ();
GUILayout.EndVertical ();
}
void showWeakSpotsList (SerializedProperty list)
{
GUILayout.BeginVertical ();
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide Weak Spots List", listButtonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
EditorGUILayout.Space ();
GUILayout.BeginVertical ();
GUILayout.Label ("Number Of Spots: \t" + list.arraySize);
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add Spot")) {
list.arraySize++;
}
if (GUILayout.Button ("Clear List")) {
list.arraySize = 0;
}
GUILayout.EndHorizontal ();
GUILayout.EndVertical ();
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++) {
expanded = false;
GUILayout.BeginHorizontal ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
if (i < list.arraySize && i >= 0) {
EditorGUILayout.BeginVertical ();
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false);
if (list.GetArrayElementAtIndex (i).isExpanded) {
expanded = true;
showListElementInfo (list.GetArrayElementAtIndex (i), i);
}
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 ();
}
}
GUILayout.EndVertical ();
}
void getExtraDamageFunctionList (SerializedProperty list)
{
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide Extra Damage Function List", listButtonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
EditorGUILayout.Space ();
GUILayout.Label ("Number Of Functions: \t" + list.arraySize);
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add Function")) {
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++) {
expanded = false;
GUILayout.BeginHorizontal ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
if (i < list.arraySize && i >= 0) {
EditorGUILayout.BeginVertical ();
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false);
if (list.GetArrayElementAtIndex (i).isExpanded) {
expanded = true;
showFunctionInfo (list.GetArrayElementAtIndex (i));
}
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 ();
}
}
}
void showFunctionInfo (SerializedProperty list)
{
GUILayout.BeginVertical ("box");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageRecived"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageFunctionCall"));
GUILayout.EndVertical ();
}
void showEventOnHealthValueList (SerializedProperty list)
{
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide Event On Health Value List", listButtonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
EditorGUILayout.Space ();
GUILayout.Label ("Number Of Events: \t" + list.arraySize);
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add Function")) {
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++) {
expanded = false;
GUILayout.BeginHorizontal ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
if (i < list.arraySize && i >= 0) {
EditorGUILayout.BeginVertical ();
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false);
if (list.GetArrayElementAtIndex (i).isExpanded) {
expanded = true;
showEventOnHealthValueListElement (list.GetArrayElementAtIndex (i));
}
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 ();
}
}
}
void showEventOnHealthValueListElement (SerializedProperty list)
{
GUILayout.BeginVertical ("box");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventEnabled"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useDamagePercentage"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("minDamageToReceive"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("callEventOnce"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventOnDamageReceived"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventToCall"));
GUILayout.EndVertical ();
}
void showSimpleList (SerializedProperty list)
{
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide Custom Transform List Damage Receiver", listButtonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
GUILayout.BeginVertical ("box");
EditorGUILayout.Space ();
GUILayout.Label ("Amount: \t" + list.arraySize);
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);
}
if (GUILayout.Button ("x")) {
list.DeleteArrayElementAtIndex (i);
list.DeleteArrayElementAtIndex (i);
}
GUILayout.EndHorizontal ();
EditorGUILayout.Space ();
}
GUILayout.EndVertical ();
}
}
void showDamageTypeInfoList (SerializedProperty list)
{
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide Damage Type Info List", listButtonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
EditorGUILayout.Space ();
GUILayout.Label ("Number Of Damage Type: \t" + list.arraySize);
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (damageTypeExplanation);
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add Damage Type")) {
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++) {
expanded = false;
GUILayout.BeginHorizontal ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
if (i < list.arraySize && i >= 0) {
EditorGUILayout.BeginVertical ();
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false);
if (list.GetArrayElementAtIndex (i).isExpanded) {
expanded = true;
showDamageTypeInfoListElement (list.GetArrayElementAtIndex (i));
}
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 ();
}
}
}
void showDamageTypeInfoListElement (SerializedProperty list)
{
GUILayout.BeginVertical ("box");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageTypeEnabled"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageTypeID"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageTypeResistance"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("avoidDamageTypeIfBlockDamageActive"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("disableDamageReactionOnDamageType"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("obtainHealthOnDamageType"));
if (list.FindPropertyRelative ("obtainHealthOnDamageType").boolValue) {
EditorGUILayout.PropertyField (list.FindPropertyRelative ("healthMultiplierOnDamageType"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("stopDamageCheckIfHealthObtained"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventOnObtainHealthOnDamageType"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnObtainHealthOnDamageType"));
}
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("useEventOnDamageType"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnDamageType"));
GUILayout.EndVertical ();
}
void showCustomStateHealthAmountOnSpotInfoList (SerializedProperty list)
{
EditorGUILayout.Space ();
if (GUILayout.Button ("Show/Hide " + list.displayName, listButtonStyle)) {
list.isExpanded = !list.isExpanded;
}
EditorGUILayout.Space ();
if (list.isExpanded) {
EditorGUILayout.Space ();
GUILayout.Label ("Number Of Elements: \t" + list.arraySize);
EditorGUILayout.Space ();
GUILayout.BeginHorizontal ();
if (GUILayout.Button ("Add Element")) {
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++) {
expanded = false;
GUILayout.BeginHorizontal ();
GUILayout.BeginHorizontal ("box");
EditorGUILayout.Space ();
if (i < list.arraySize && i >= 0) {
EditorGUILayout.BeginVertical ();
EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false);
if (list.GetArrayElementAtIndex (i).isExpanded) {
expanded = true;
showCustomStateHealthAmountOnSpotInfoListElement (list.GetArrayElementAtIndex (i));
}
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 ();
}
}
}
void showCustomStateHealthAmountOnSpotInfoListElement (SerializedProperty list)
{
GUILayout.BeginVertical ("box");
EditorGUILayout.PropertyField (list.FindPropertyRelative ("name"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("ID"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("healhtAmountOnSpot"));
EditorGUILayout.PropertyField (list.FindPropertyRelative ("killCharacterOnEmtpyHealthAmountOnSpot"));
EditorGUILayout.Space ();
EditorGUILayout.PropertyField (list.FindPropertyRelative ("eventOnEmtpyHealthAmountOnSpot"));
GUILayout.EndVertical ();
}
}
#endif