using UnityEngine; using System.Collections; #if UNITY_EDITOR using UnityEditor; [CanEditMultipleObjects] [CustomEditor (typeof (playerWeaponsManager))] public class playerWeaponsManagerEditor : Editor { SerializedProperty carryingWeaponInThirdPerson; SerializedProperty carryingWeaponInFirstPerson; SerializedProperty aimingInThirdPerson; SerializedProperty aimingInFirstPerson; SerializedProperty aimModeInputPressed; SerializedProperty anyWeaponAvailable; SerializedProperty currentWeaponName; SerializedProperty changingWeapon; SerializedProperty keepingWeapon; SerializedProperty editingWeaponAttachments; SerializedProperty avoidShootCurrentlyActive; SerializedProperty reloadingWithAnimationActive; SerializedProperty weaponsModeActive; SerializedProperty shootingSingleWeapon; SerializedProperty choosedWeapon; SerializedProperty usingFreeFireMode; SerializedProperty currentIKWeapon; SerializedProperty usingDualWeapon; SerializedProperty currentRighWeaponName; SerializedProperty currentLeftWeaponName; SerializedProperty shootingRightWeapon; SerializedProperty shootingLeftWeapon; SerializedProperty chooseDualWeaponIndex; SerializedProperty currentRightIKWeapon; SerializedProperty currentLeftIkWeapon; SerializedProperty showMainSettings; SerializedProperty showWeaponsList; SerializedProperty showElementSettings; SerializedProperty showDebugSettings; SerializedProperty weaponsSlotsAmount; SerializedProperty weaponsLayer; SerializedProperty targetToDamageLayer; SerializedProperty targetForScorchLayer; SerializedProperty useCustomLayerToCheck; SerializedProperty customLayerToCheck; SerializedProperty useCustomIgnoreTags; SerializedProperty customTagsToIgnoreList; SerializedProperty setWeaponWhenPicked; SerializedProperty canGrabObjectsCarryingWeapons; SerializedProperty changeToNextWeaponIfAmmoEmpty; SerializedProperty removeCurrentWeaponAsNotUsableIfAmmoEmptyEnabled; SerializedProperty useEventOnEmptyAmmoOnCurrentWeapon; SerializedProperty eventOnEmptyAmmoOnCurrentWeapon; SerializedProperty drawKeepWeaponWhenModeChanged; SerializedProperty changeWeaponsWithNumberKeysActive; SerializedProperty changeWeaponsWithMouseWheelActive; SerializedProperty changeWeaponsWithKeysActive; SerializedProperty weaponsHUDEnabled; SerializedProperty disableWeaponsHUDAfterDelayEnabled; SerializedProperty delayToDisableWeaponsHUD; SerializedProperty weaponCursorActive; SerializedProperty useWeaponCursorUnableToShootThirdPerson; SerializedProperty useWeaponCursorUnableToShootFirstPerson; SerializedProperty canFireWeaponsWithoutAiming; SerializedProperty drawWeaponIfFireButtonPressed; SerializedProperty drawAndAimWeaponIfFireButtonPressed; SerializedProperty keepWeaponAfterDelayThirdPerson; SerializedProperty keepWeaponAfterDelayFirstPerson; SerializedProperty keepWeaponDelay; SerializedProperty useQuickDrawWeapon; SerializedProperty timeToStopAimAfterStopFiring; SerializedProperty useAimCameraOnFreeFireMode; SerializedProperty pivotPointRotationActive; SerializedProperty pivotPointRotationSpeed; SerializedProperty runWhenAimingWeaponInThirdPerson; SerializedProperty stopRunIfPreviouslyNotRunning; SerializedProperty runAlsoWhenFiringWithoutAiming; SerializedProperty canJumpWhileAimingThirdPerson; SerializedProperty canAimOnAirThirdPerson; SerializedProperty stopAimingOnAirThirdPerson; SerializedProperty ignoreParentWeaponOutsidePlayerBodyWhenNotActive; SerializedProperty keepLookAtTargetActiveWhenFiringWithoutAiming; SerializedProperty ignoreCheckSurfaceCollisionThirdPerson; SerializedProperty ignoreCheckSurfaceCollisionFirstPerson; SerializedProperty fireWeaponsInputActive; SerializedProperty generalWeaponsInputActive; SerializedProperty storePickedWeaponsOnInventory; SerializedProperty checkDurabilityOnObjectEnabled; SerializedProperty useEventOnDurabilityEmptyOnMeleeWeapon; SerializedProperty eventOnDurabilityEmptyOnMeleeWeapon; SerializedProperty drawWeaponWhenPicked; SerializedProperty drawPickedWeaponOnlyItNotPreviousWeaponEquipped; SerializedProperty changeToNextWeaponWhenEquipped; SerializedProperty changeToNextWeaponWhenUnequipped; SerializedProperty notActivateWeaponsAtStart; SerializedProperty canStoreAnyNumberSameWeapon; SerializedProperty useAmmoFromInventoryInAllWeapons; SerializedProperty openWeaponAttachmentsMenuPaused; SerializedProperty openWeaponAttachmentsMenuEnabled; SerializedProperty setFirstPersonForAttachmentEditor; SerializedProperty useUniversalAttachments; SerializedProperty startGameWithCurrentWeapon; SerializedProperty drawInitialWeaponSelected; SerializedProperty startWithFirstWeaponAvailable; SerializedProperty startGameWithDualWeapons; SerializedProperty avaliableWeaponList; SerializedProperty rightWeaponToStartIndex; SerializedProperty leftWeaponToStartIndex; SerializedProperty rightWeaponToStartName; SerializedProperty leftWeaponToStartName; SerializedProperty weaponToStartIndex; SerializedProperty weaponToStartName; SerializedProperty startWithRandomWeapon; SerializedProperty canDropWeapons; SerializedProperty changeToNextWeaponWhenDrop; SerializedProperty dropWeaponForceThirdPerson; SerializedProperty dropWeaponForceFirstPerson; SerializedProperty holdDropButtonToIncreaseForce; SerializedProperty dropIncreaseForceSpeed; SerializedProperty maxDropForce; SerializedProperty dropWeaponInventoryObjectsPickups; SerializedProperty dropCurrentWeaponWhenDie; SerializedProperty dropAllWeaponsWhenDie; SerializedProperty dropWeaponsOnlyIfUsing; SerializedProperty drawWeaponWhenResurrect; SerializedProperty canMarkTargets; SerializedProperty useAimAssistInThirdPerson; SerializedProperty useAimAssistInFirstPerson; SerializedProperty useMaxDistanceToCameraCenterAimAssist; SerializedProperty maxDistanceToCameraCenterAimAssist; SerializedProperty useAimAssistInLockedCamera; SerializedProperty aimAssistLookAtTargetSpeed; SerializedProperty damageMultiplierStat; SerializedProperty extraDamageStat; SerializedProperty spreadMultiplierStat; SerializedProperty fireRateMultiplierStat; SerializedProperty extraReloadSpeedStat; SerializedProperty magazineExtraSizeStat; SerializedProperty cantPickWeaponMessage; SerializedProperty cantDropCurrentWeaponMessage; SerializedProperty cantPickAttachmentMessage; SerializedProperty weaponMessageDuration; SerializedProperty useEventsOnStateChange; SerializedProperty evenOnStateEnabled; SerializedProperty eventOnStateDisabled; SerializedProperty loadCurrentPlayerWeaponsFromSaveFile; SerializedProperty saveCurrentPlayerWeaponsToSaveFile; SerializedProperty loadWeaponAttachmentsInfoFromSaveFile; SerializedProperty saveWeaponAttachmentsInfoToSaveFile; SerializedProperty showRemainAmmoText; SerializedProperty minSwipeDist; SerializedProperty usedByAI; SerializedProperty weaponsList; SerializedProperty weaponPocketList; SerializedProperty weaponsHUD; SerializedProperty singleWeaponHUD; SerializedProperty currentWeaponNameText; SerializedProperty currentWeaponAmmoText; SerializedProperty useRemainAmmoWeaponText; SerializedProperty remainAmmoWeaponText; SerializedProperty ammoSlider; SerializedProperty currentWeaponIcon; SerializedProperty attachmentPanel; SerializedProperty attachmentAmmoText; SerializedProperty currentAttachmentIcon; SerializedProperty dualWeaponHUD; SerializedProperty currentRightWeaponAmmoText; SerializedProperty rightAttachmentPanel; SerializedProperty rigthAttachmentAmmoText; SerializedProperty currentRightAttachmentIcon; SerializedProperty currentLeftWeaponAmmoText; SerializedProperty leftAttachmentPanel; SerializedProperty leftAttachmentAmmoText; SerializedProperty currentLeftAttachmentIcon; SerializedProperty weaponsParent; SerializedProperty weaponsTransformInFirstPerson; SerializedProperty weaponsTransformInThirdPerson; SerializedProperty thirdPersonParent; SerializedProperty firstPersonParent; SerializedProperty cameraController; SerializedProperty weaponsCamera; SerializedProperty weaponCursor; SerializedProperty cursorRectTransform; SerializedProperty weaponCursorRegular; SerializedProperty weaponCursorAimingInFirstPerson; SerializedProperty weaponCursorUnableToShoot; SerializedProperty weaponCustomReticle; SerializedProperty weaponsMessageWindow; SerializedProperty mainObjectTransformData; SerializedProperty temporalParentForWeapons; SerializedProperty pauseManager; SerializedProperty playerScreenObjectivesManager; SerializedProperty playerCameraManager; SerializedProperty headBobManager; SerializedProperty playerInput; SerializedProperty IKManager; SerializedProperty playerManager; SerializedProperty upperBodyRotationManager; SerializedProperty headTrackManager; SerializedProperty grabObjectsManager; SerializedProperty playerInventoryManager; SerializedProperty usingDevicesManager; SerializedProperty mainCollider; SerializedProperty ragdollManager; SerializedProperty mainCameraTransform; SerializedProperty mainCamera; SerializedProperty mainWeaponListManager; SerializedProperty mainDynamicReticleSystem; SerializedProperty rightHandTransform; SerializedProperty leftHandTransform; SerializedProperty rightHandMountPoint; SerializedProperty leftHandMountPoint; SerializedProperty showDebugLog; SerializedProperty mainSimpleSniperSightSystem; SerializedProperty activateDualWeaponsEnabled; SerializedProperty shootDualWeaponsWithSingleInputEnabled; SerializedProperty aimDualWeaponsWithRightShootInputEnabled; SerializedProperty useCameraShakeOnShootEnabled; SerializedProperty useUsableWeaponPrefabInfoList; SerializedProperty usableWeaponPrefabInfoList; SerializedProperty ignoreUseDrawKeepWeaponAnimation; SerializedProperty forceWeaponToUseQuickDrawKeepWeaponActive; SerializedProperty weaponsCanBeStolenFromCharacter; SerializedProperty useEventOnWeaponStolen; SerializedProperty eventOnWeaponStolen; SerializedProperty ignoreNewAnimatorWeaponIDSettings; SerializedProperty currentOffsetParentThirdPerson; SerializedProperty ignoreUpperBodyRotationSystem; SerializedProperty ignoreShakeUpperBodyEnabled; SerializedProperty fullBodyAwarenessWeaponsParentOffsetPosition; SerializedProperty fullBodyAwarenessActive; SerializedProperty firstPersonActive; SerializedProperty useExtraColliderOnFireWeaponOnFBA; SerializedProperty extraColliderOnFireWeaponOnFBATransform; SerializedProperty extraColliderOnFireWeaponOnFBA; SerializedProperty useExtraColliderOnFireWeaponsOnThirdPerson; SerializedProperty useDrawKeepWeaponAnimationOnAllWeaponsOnFBA; SerializedProperty overrideOptionToHideWeaponMeshWhenNotUsed; SerializedProperty hideWeaponMeshWhenNotUsed; SerializedProperty throwWeaponInCameraDirectionEnabled; SerializedProperty headTrackBodyWeightOnAimOnThrowWeapon; SerializedProperty customAimReticleName; SerializedProperty checkAimOnThrowWeaponStateEnabled; SerializedProperty useWeaponPocketEnabled; playerWeaponsManager manager; Color buttonColor; string carryingWeaponMode; string aimingWeaponMode; string currentState; string currentWeaponText; string shootingWeapon; string weaponsModeActiveText; string inputListOpenedText; GUIStyle style = new GUIStyle (); IKWeaponSystem _currentIKWeapon; GUIStyle buttonStyle = new GUIStyle (); bool applicationIsPlaying; void OnEnable () { carryingWeaponInThirdPerson = serializedObject.FindProperty ("carryingWeaponInThirdPerson"); carryingWeaponInFirstPerson = serializedObject.FindProperty ("carryingWeaponInFirstPerson"); aimingInThirdPerson = serializedObject.FindProperty ("aimingInThirdPerson"); aimingInFirstPerson = serializedObject.FindProperty ("aimingInFirstPerson"); aimModeInputPressed = serializedObject.FindProperty ("aimModeInputPressed"); anyWeaponAvailable = serializedObject.FindProperty ("anyWeaponAvailable"); currentWeaponName = serializedObject.FindProperty ("currentWeaponName"); changingWeapon = serializedObject.FindProperty ("changingWeapon"); keepingWeapon = serializedObject.FindProperty ("keepingWeapon"); editingWeaponAttachments = serializedObject.FindProperty ("editingWeaponAttachments"); avoidShootCurrentlyActive = serializedObject.FindProperty ("avoidShootCurrentlyActive"); reloadingWithAnimationActive = serializedObject.FindProperty ("reloadingWithAnimationActive"); weaponsModeActive = serializedObject.FindProperty ("weaponsModeActive"); shootingSingleWeapon = serializedObject.FindProperty ("shootingSingleWeapon"); choosedWeapon = serializedObject.FindProperty ("choosedWeapon"); usingFreeFireMode = serializedObject.FindProperty ("usingFreeFireMode"); currentIKWeapon = serializedObject.FindProperty ("currentIKWeapon"); usingDualWeapon = serializedObject.FindProperty ("usingDualWeapon"); currentRighWeaponName = serializedObject.FindProperty ("currentRighWeaponName"); currentLeftWeaponName = serializedObject.FindProperty ("currentLeftWeaponName"); shootingRightWeapon = serializedObject.FindProperty ("shootingRightWeapon"); shootingLeftWeapon = serializedObject.FindProperty ("shootingLeftWeapon"); chooseDualWeaponIndex = serializedObject.FindProperty ("chooseDualWeaponIndex"); currentRightIKWeapon = serializedObject.FindProperty ("currentRightIKWeapon"); currentLeftIkWeapon = serializedObject.FindProperty ("currentLeftIkWeapon"); showMainSettings = serializedObject.FindProperty ("showMainSettings"); showWeaponsList = serializedObject.FindProperty ("showWeaponsList"); showElementSettings = serializedObject.FindProperty ("showElementSettings"); showDebugSettings = serializedObject.FindProperty ("showDebugSettings"); weaponsSlotsAmount = serializedObject.FindProperty ("weaponsSlotsAmount"); weaponsLayer = serializedObject.FindProperty ("weaponsLayer"); targetToDamageLayer = serializedObject.FindProperty ("targetToDamageLayer"); targetForScorchLayer = serializedObject.FindProperty ("targetForScorchLayer"); useCustomLayerToCheck = serializedObject.FindProperty ("useCustomLayerToCheck"); customLayerToCheck = serializedObject.FindProperty ("customLayerToCheck"); useCustomIgnoreTags = serializedObject.FindProperty ("useCustomIgnoreTags"); customTagsToIgnoreList = serializedObject.FindProperty ("customTagsToIgnoreList"); setWeaponWhenPicked = serializedObject.FindProperty ("setWeaponWhenPicked"); canGrabObjectsCarryingWeapons = serializedObject.FindProperty ("canGrabObjectsCarryingWeapons"); changeToNextWeaponIfAmmoEmpty = serializedObject.FindProperty ("changeToNextWeaponIfAmmoEmpty"); removeCurrentWeaponAsNotUsableIfAmmoEmptyEnabled = serializedObject.FindProperty ("removeCurrentWeaponAsNotUsableIfAmmoEmptyEnabled"); useEventOnEmptyAmmoOnCurrentWeapon = serializedObject.FindProperty ("useEventOnEmptyAmmoOnCurrentWeapon"); eventOnEmptyAmmoOnCurrentWeapon = serializedObject.FindProperty ("eventOnEmptyAmmoOnCurrentWeapon"); drawKeepWeaponWhenModeChanged = serializedObject.FindProperty ("drawKeepWeaponWhenModeChanged"); changeWeaponsWithNumberKeysActive = serializedObject.FindProperty ("changeWeaponsWithNumberKeysActive"); changeWeaponsWithMouseWheelActive = serializedObject.FindProperty ("changeWeaponsWithMouseWheelActive"); changeWeaponsWithKeysActive = serializedObject.FindProperty ("changeWeaponsWithKeysActive"); weaponsHUDEnabled = serializedObject.FindProperty ("weaponsHUDEnabled"); disableWeaponsHUDAfterDelayEnabled = serializedObject.FindProperty ("disableWeaponsHUDAfterDelayEnabled"); delayToDisableWeaponsHUD = serializedObject.FindProperty ("delayToDisableWeaponsHUD"); weaponCursorActive = serializedObject.FindProperty ("weaponCursorActive"); useWeaponCursorUnableToShootThirdPerson = serializedObject.FindProperty ("useWeaponCursorUnableToShootThirdPerson"); useWeaponCursorUnableToShootFirstPerson = serializedObject.FindProperty ("useWeaponCursorUnableToShootFirstPerson"); canFireWeaponsWithoutAiming = serializedObject.FindProperty ("canFireWeaponsWithoutAiming"); drawWeaponIfFireButtonPressed = serializedObject.FindProperty ("drawWeaponIfFireButtonPressed"); drawAndAimWeaponIfFireButtonPressed = serializedObject.FindProperty ("drawAndAimWeaponIfFireButtonPressed"); keepWeaponAfterDelayThirdPerson = serializedObject.FindProperty ("keepWeaponAfterDelayThirdPerson"); keepWeaponAfterDelayFirstPerson = serializedObject.FindProperty ("keepWeaponAfterDelayFirstPerson"); keepWeaponDelay = serializedObject.FindProperty ("keepWeaponDelay"); useQuickDrawWeapon = serializedObject.FindProperty ("useQuickDrawWeapon"); timeToStopAimAfterStopFiring = serializedObject.FindProperty ("timeToStopAimAfterStopFiring"); useAimCameraOnFreeFireMode = serializedObject.FindProperty ("useAimCameraOnFreeFireMode"); pivotPointRotationActive = serializedObject.FindProperty ("pivotPointRotationActive"); pivotPointRotationSpeed = serializedObject.FindProperty ("pivotPointRotationSpeed"); runWhenAimingWeaponInThirdPerson = serializedObject.FindProperty ("runWhenAimingWeaponInThirdPerson"); stopRunIfPreviouslyNotRunning = serializedObject.FindProperty ("stopRunIfPreviouslyNotRunning"); runAlsoWhenFiringWithoutAiming = serializedObject.FindProperty ("runAlsoWhenFiringWithoutAiming"); canJumpWhileAimingThirdPerson = serializedObject.FindProperty ("canJumpWhileAimingThirdPerson"); canAimOnAirThirdPerson = serializedObject.FindProperty ("canAimOnAirThirdPerson"); stopAimingOnAirThirdPerson = serializedObject.FindProperty ("stopAimingOnAirThirdPerson"); ignoreParentWeaponOutsidePlayerBodyWhenNotActive = serializedObject.FindProperty ("ignoreParentWeaponOutsidePlayerBodyWhenNotActive"); keepLookAtTargetActiveWhenFiringWithoutAiming = serializedObject.FindProperty ("keepLookAtTargetActiveWhenFiringWithoutAiming"); ignoreCheckSurfaceCollisionThirdPerson = serializedObject.FindProperty ("ignoreCheckSurfaceCollisionThirdPerson"); ignoreCheckSurfaceCollisionFirstPerson = serializedObject.FindProperty ("ignoreCheckSurfaceCollisionFirstPerson"); fireWeaponsInputActive = serializedObject.FindProperty ("fireWeaponsInputActive"); generalWeaponsInputActive = serializedObject.FindProperty ("generalWeaponsInputActive"); storePickedWeaponsOnInventory = serializedObject.FindProperty ("storePickedWeaponsOnInventory"); checkDurabilityOnObjectEnabled = serializedObject.FindProperty ("checkDurabilityOnObjectEnabled"); useEventOnDurabilityEmptyOnMeleeWeapon = serializedObject.FindProperty ("useEventOnDurabilityEmptyOnMeleeWeapon"); eventOnDurabilityEmptyOnMeleeWeapon = serializedObject.FindProperty ("eventOnDurabilityEmptyOnMeleeWeapon"); drawWeaponWhenPicked = serializedObject.FindProperty ("drawWeaponWhenPicked"); drawPickedWeaponOnlyItNotPreviousWeaponEquipped = serializedObject.FindProperty ("drawPickedWeaponOnlyItNotPreviousWeaponEquipped"); changeToNextWeaponWhenEquipped = serializedObject.FindProperty ("changeToNextWeaponWhenEquipped"); changeToNextWeaponWhenUnequipped = serializedObject.FindProperty ("changeToNextWeaponWhenUnequipped"); notActivateWeaponsAtStart = serializedObject.FindProperty ("notActivateWeaponsAtStart"); canStoreAnyNumberSameWeapon = serializedObject.FindProperty ("canStoreAnyNumberSameWeapon"); useAmmoFromInventoryInAllWeapons = serializedObject.FindProperty ("useAmmoFromInventoryInAllWeapons"); openWeaponAttachmentsMenuPaused = serializedObject.FindProperty ("openWeaponAttachmentsMenuPaused"); openWeaponAttachmentsMenuEnabled = serializedObject.FindProperty ("openWeaponAttachmentsMenuEnabled"); setFirstPersonForAttachmentEditor = serializedObject.FindProperty ("setFirstPersonForAttachmentEditor"); useUniversalAttachments = serializedObject.FindProperty ("useUniversalAttachments"); startGameWithCurrentWeapon = serializedObject.FindProperty ("startGameWithCurrentWeapon"); drawInitialWeaponSelected = serializedObject.FindProperty ("drawInitialWeaponSelected"); startWithFirstWeaponAvailable = serializedObject.FindProperty ("startWithFirstWeaponAvailable"); startGameWithDualWeapons = serializedObject.FindProperty ("startGameWithDualWeapons"); avaliableWeaponList = serializedObject.FindProperty ("avaliableWeaponList"); rightWeaponToStartIndex = serializedObject.FindProperty ("rightWeaponToStartIndex"); leftWeaponToStartIndex = serializedObject.FindProperty ("leftWeaponToStartIndex"); rightWeaponToStartName = serializedObject.FindProperty ("rightWeaponToStartName"); leftWeaponToStartName = serializedObject.FindProperty ("leftWeaponToStartName"); weaponToStartIndex = serializedObject.FindProperty ("weaponToStartIndex"); weaponToStartName = serializedObject.FindProperty ("weaponToStartName"); startWithRandomWeapon = serializedObject.FindProperty ("startWithRandomWeapon"); canDropWeapons = serializedObject.FindProperty ("canDropWeapons"); changeToNextWeaponWhenDrop = serializedObject.FindProperty ("changeToNextWeaponWhenDrop"); dropWeaponForceThirdPerson = serializedObject.FindProperty ("dropWeaponForceThirdPerson"); dropWeaponForceFirstPerson = serializedObject.FindProperty ("dropWeaponForceFirstPerson"); holdDropButtonToIncreaseForce = serializedObject.FindProperty ("holdDropButtonToIncreaseForce"); dropIncreaseForceSpeed = serializedObject.FindProperty ("dropIncreaseForceSpeed"); maxDropForce = serializedObject.FindProperty ("maxDropForce"); dropWeaponInventoryObjectsPickups = serializedObject.FindProperty ("dropWeaponInventoryObjectsPickups"); dropCurrentWeaponWhenDie = serializedObject.FindProperty ("dropCurrentWeaponWhenDie"); dropAllWeaponsWhenDie = serializedObject.FindProperty ("dropAllWeaponsWhenDie"); dropWeaponsOnlyIfUsing = serializedObject.FindProperty ("dropWeaponsOnlyIfUsing"); drawWeaponWhenResurrect = serializedObject.FindProperty ("drawWeaponWhenResurrect"); canMarkTargets = serializedObject.FindProperty ("canMarkTargets"); useAimAssistInThirdPerson = serializedObject.FindProperty ("useAimAssistInThirdPerson"); useAimAssistInFirstPerson = serializedObject.FindProperty ("useAimAssistInFirstPerson"); useMaxDistanceToCameraCenterAimAssist = serializedObject.FindProperty ("useMaxDistanceToCameraCenterAimAssist"); maxDistanceToCameraCenterAimAssist = serializedObject.FindProperty ("maxDistanceToCameraCenterAimAssist"); useAimAssistInLockedCamera = serializedObject.FindProperty ("useAimAssistInLockedCamera"); aimAssistLookAtTargetSpeed = serializedObject.FindProperty ("aimAssistLookAtTargetSpeed"); damageMultiplierStat = serializedObject.FindProperty ("damageMultiplierStat"); extraDamageStat = serializedObject.FindProperty ("extraDamageStat"); spreadMultiplierStat = serializedObject.FindProperty ("spreadMultiplierStat"); fireRateMultiplierStat = serializedObject.FindProperty ("fireRateMultiplierStat"); extraReloadSpeedStat = serializedObject.FindProperty ("extraReloadSpeedStat"); magazineExtraSizeStat = serializedObject.FindProperty ("magazineExtraSizeStat"); cantPickWeaponMessage = serializedObject.FindProperty ("cantPickWeaponMessage"); cantDropCurrentWeaponMessage = serializedObject.FindProperty ("cantDropCurrentWeaponMessage"); cantPickAttachmentMessage = serializedObject.FindProperty ("cantPickAttachmentMessage"); weaponMessageDuration = serializedObject.FindProperty ("weaponMessageDuration"); useEventsOnStateChange = serializedObject.FindProperty ("useEventsOnStateChange"); evenOnStateEnabled = serializedObject.FindProperty ("evenOnStateEnabled"); eventOnStateDisabled = serializedObject.FindProperty ("eventOnStateDisabled"); loadCurrentPlayerWeaponsFromSaveFile = serializedObject.FindProperty ("loadCurrentPlayerWeaponsFromSaveFile"); saveCurrentPlayerWeaponsToSaveFile = serializedObject.FindProperty ("saveCurrentPlayerWeaponsToSaveFile"); loadWeaponAttachmentsInfoFromSaveFile = serializedObject.FindProperty ("loadWeaponAttachmentsInfoFromSaveFile"); saveWeaponAttachmentsInfoToSaveFile = serializedObject.FindProperty ("saveWeaponAttachmentsInfoToSaveFile"); showRemainAmmoText = serializedObject.FindProperty ("showRemainAmmoText"); minSwipeDist = serializedObject.FindProperty ("minSwipeDist"); usedByAI = serializedObject.FindProperty ("usedByAI"); weaponsList = serializedObject.FindProperty ("weaponsList"); weaponPocketList = serializedObject.FindProperty ("weaponPocketList"); weaponsHUD = serializedObject.FindProperty ("weaponsHUD"); singleWeaponHUD = serializedObject.FindProperty ("singleWeaponHUD"); currentWeaponNameText = serializedObject.FindProperty ("currentWeaponNameText"); currentWeaponAmmoText = serializedObject.FindProperty ("currentWeaponAmmoText"); useRemainAmmoWeaponText = serializedObject.FindProperty ("useRemainAmmoWeaponText"); remainAmmoWeaponText = serializedObject.FindProperty ("remainAmmoWeaponText"); ammoSlider = serializedObject.FindProperty ("ammoSlider"); currentWeaponIcon = serializedObject.FindProperty ("currentWeaponIcon"); attachmentPanel = serializedObject.FindProperty ("attachmentPanel"); attachmentAmmoText = serializedObject.FindProperty ("attachmentAmmoText"); currentAttachmentIcon = serializedObject.FindProperty ("currentAttachmentIcon"); dualWeaponHUD = serializedObject.FindProperty ("dualWeaponHUD"); currentRightWeaponAmmoText = serializedObject.FindProperty ("currentRightWeaponAmmoText"); rightAttachmentPanel = serializedObject.FindProperty ("rightAttachmentPanel"); rigthAttachmentAmmoText = serializedObject.FindProperty ("rigthAttachmentAmmoText"); currentRightAttachmentIcon = serializedObject.FindProperty ("currentRightAttachmentIcon"); currentLeftWeaponAmmoText = serializedObject.FindProperty ("currentLeftWeaponAmmoText"); leftAttachmentPanel = serializedObject.FindProperty ("leftAttachmentPanel"); leftAttachmentAmmoText = serializedObject.FindProperty ("leftAttachmentAmmoText"); currentLeftAttachmentIcon = serializedObject.FindProperty ("currentLeftAttachmentIcon"); weaponsParent = serializedObject.FindProperty ("weaponsParent"); weaponsTransformInFirstPerson = serializedObject.FindProperty ("weaponsTransformInFirstPerson"); weaponsTransformInThirdPerson = serializedObject.FindProperty ("weaponsTransformInThirdPerson"); thirdPersonParent = serializedObject.FindProperty ("thirdPersonParent"); firstPersonParent = serializedObject.FindProperty ("firstPersonParent"); cameraController = serializedObject.FindProperty ("cameraController"); weaponsCamera = serializedObject.FindProperty ("weaponsCamera"); weaponCursor = serializedObject.FindProperty ("weaponCursor"); cursorRectTransform = serializedObject.FindProperty ("cursorRectTransform"); weaponCursorRegular = serializedObject.FindProperty ("weaponCursorRegular"); weaponCursorAimingInFirstPerson = serializedObject.FindProperty ("weaponCursorAimingInFirstPerson"); weaponCursorUnableToShoot = serializedObject.FindProperty ("weaponCursorUnableToShoot"); weaponCustomReticle = serializedObject.FindProperty ("weaponCustomReticle"); weaponsMessageWindow = serializedObject.FindProperty ("weaponsMessageWindow"); mainObjectTransformData = serializedObject.FindProperty ("mainObjectTransformData"); temporalParentForWeapons = serializedObject.FindProperty ("temporalParentForWeapons"); pauseManager = serializedObject.FindProperty ("pauseManager"); playerScreenObjectivesManager = serializedObject.FindProperty ("playerScreenObjectivesManager"); playerCameraManager = serializedObject.FindProperty ("playerCameraManager"); headBobManager = serializedObject.FindProperty ("headBobManager"); playerInput = serializedObject.FindProperty ("playerInput"); IKManager = serializedObject.FindProperty ("IKManager"); playerManager = serializedObject.FindProperty ("playerManager"); upperBodyRotationManager = serializedObject.FindProperty ("upperBodyRotationManager"); headTrackManager = serializedObject.FindProperty ("headTrackManager"); grabObjectsManager = serializedObject.FindProperty ("grabObjectsManager"); playerInventoryManager = serializedObject.FindProperty ("playerInventoryManager"); usingDevicesManager = serializedObject.FindProperty ("usingDevicesManager"); mainCollider = serializedObject.FindProperty ("mainCollider"); ragdollManager = serializedObject.FindProperty ("ragdollManager"); mainCameraTransform = serializedObject.FindProperty ("mainCameraTransform"); mainCamera = serializedObject.FindProperty ("mainCamera"); mainWeaponListManager = serializedObject.FindProperty ("mainWeaponListManager"); mainDynamicReticleSystem = serializedObject.FindProperty ("mainDynamicReticleSystem"); rightHandTransform = serializedObject.FindProperty ("rightHandTransform"); leftHandTransform = serializedObject.FindProperty ("leftHandTransform"); rightHandMountPoint = serializedObject.FindProperty ("rightHandMountPoint"); leftHandMountPoint = serializedObject.FindProperty ("leftHandMountPoint"); showDebugLog = serializedObject.FindProperty ("showDebugLog"); mainSimpleSniperSightSystem = serializedObject.FindProperty ("mainSimpleSniperSightSystem"); activateDualWeaponsEnabled = serializedObject.FindProperty ("activateDualWeaponsEnabled"); shootDualWeaponsWithSingleInputEnabled = serializedObject.FindProperty ("shootDualWeaponsWithSingleInputEnabled"); aimDualWeaponsWithRightShootInputEnabled = serializedObject.FindProperty ("aimDualWeaponsWithRightShootInputEnabled"); useCameraShakeOnShootEnabled = serializedObject.FindProperty ("useCameraShakeOnShootEnabled"); useUsableWeaponPrefabInfoList = serializedObject.FindProperty ("useUsableWeaponPrefabInfoList"); usableWeaponPrefabInfoList = serializedObject.FindProperty ("usableWeaponPrefabInfoList"); ignoreUseDrawKeepWeaponAnimation = serializedObject.FindProperty ("ignoreUseDrawKeepWeaponAnimation"); forceWeaponToUseQuickDrawKeepWeaponActive = serializedObject.FindProperty ("forceWeaponToUseQuickDrawKeepWeaponActive"); weaponsCanBeStolenFromCharacter = serializedObject.FindProperty ("weaponsCanBeStolenFromCharacter"); useEventOnWeaponStolen = serializedObject.FindProperty ("useEventOnWeaponStolen"); eventOnWeaponStolen = serializedObject.FindProperty ("eventOnWeaponStolen"); ignoreNewAnimatorWeaponIDSettings = serializedObject.FindProperty ("ignoreNewAnimatorWeaponIDSettings"); currentOffsetParentThirdPerson = serializedObject.FindProperty ("currentOffsetParentThirdPerson"); ignoreUpperBodyRotationSystem = serializedObject.FindProperty ("ignoreUpperBodyRotationSystem"); ignoreShakeUpperBodyEnabled = serializedObject.FindProperty ("ignoreShakeUpperBodyEnabled"); fullBodyAwarenessWeaponsParentOffsetPosition = serializedObject.FindProperty ("fullBodyAwarenessWeaponsParentOffsetPosition"); fullBodyAwarenessActive = serializedObject.FindProperty ("fullBodyAwarenessActive"); firstPersonActive = serializedObject.FindProperty ("firstPersonActive"); useExtraColliderOnFireWeaponOnFBA = serializedObject.FindProperty ("useExtraColliderOnFireWeaponOnFBA"); extraColliderOnFireWeaponOnFBATransform = serializedObject.FindProperty ("extraColliderOnFireWeaponOnFBATransform"); extraColliderOnFireWeaponOnFBA = serializedObject.FindProperty ("extraColliderOnFireWeaponOnFBA"); useExtraColliderOnFireWeaponsOnThirdPerson = serializedObject.FindProperty ("useExtraColliderOnFireWeaponsOnThirdPerson"); useDrawKeepWeaponAnimationOnAllWeaponsOnFBA = serializedObject.FindProperty ("useDrawKeepWeaponAnimationOnAllWeaponsOnFBA"); overrideOptionToHideWeaponMeshWhenNotUsed = serializedObject.FindProperty ("overrideOptionToHideWeaponMeshWhenNotUsed"); hideWeaponMeshWhenNotUsed = serializedObject.FindProperty ("hideWeaponMeshWhenNotUsed"); throwWeaponInCameraDirectionEnabled = serializedObject.FindProperty ("throwWeaponInCameraDirectionEnabled"); headTrackBodyWeightOnAimOnThrowWeapon = serializedObject.FindProperty ("headTrackBodyWeightOnAimOnThrowWeapon"); customAimReticleName = serializedObject.FindProperty ("customAimReticleName"); checkAimOnThrowWeaponStateEnabled = serializedObject.FindProperty ("checkAimOnThrowWeaponStateEnabled"); useWeaponPocketEnabled = serializedObject.FindProperty ("useWeaponPocketEnabled"); manager = (playerWeaponsManager)target; } public override void OnInspectorGUI () { EditorGUI.BeginChangeCheck (); EditorGUILayout.Space (); buttonStyle = new GUIStyle (GUI.skin.button); buttonStyle.fontStyle = FontStyle.Bold; buttonStyle.fontSize = 12; applicationIsPlaying = Application.isPlaying; GUILayout.BeginVertical ("Player Weapons State", "window"); carryingWeaponMode = "Not Carrying"; if (applicationIsPlaying) { if (carryingWeaponInThirdPerson.boolValue) { carryingWeaponMode = "Third Person"; } if (carryingWeaponInFirstPerson.boolValue) { carryingWeaponMode = "First Person"; } } GUILayout.Label ("Carrying Weapon\t\t" + carryingWeaponMode); aimingWeaponMode = "Not Aiming"; if (applicationIsPlaying) { if (aimingInThirdPerson.boolValue) { aimingWeaponMode = "Third Person"; } if (aimingInFirstPerson.boolValue) { aimingWeaponMode = "First Person"; } } GUILayout.Label ("Aiming Weapon\t\t\t" + aimingWeaponMode); currentState = "Not Using"; if (applicationIsPlaying) { if (anyWeaponAvailable.boolValue) { if (carryingWeaponInThirdPerson.boolValue) { currentState = "Carrying Weapon 3st"; } else if (carryingWeaponInFirstPerson.boolValue) { currentState = "Carrying Weapon 1st"; } else { currentState = "Not Carrying"; } } else { currentState = "Not Available"; } } GUILayout.Label ("Current State\t\t\t" + currentState); currentWeaponText = "None"; if (applicationIsPlaying) { if (anyWeaponAvailable.boolValue) { currentWeaponText = currentWeaponName.stringValue; } } GUILayout.Label ("Weapons Available \t\t" + anyWeaponAvailable.boolValue); GUILayout.Label ("Changing Weapon \t\t" + changingWeapon.boolValue); GUILayout.Label ("Keeping Weapon \t\t" + keepingWeapon.boolValue); GUILayout.Label ("Editing Attachments \t\t" + editingWeaponAttachments.boolValue); GUILayout.Label ("Avoid Shoot Active \t\t" + avoidShootCurrentlyActive.boolValue); GUILayout.Label ("Reload Anim Active \t\t" + reloadingWithAnimationActive.boolValue); GUILayout.Label ("Aim Input Pressed \t\t" + aimModeInputPressed.boolValue); weaponsModeActiveText = "NO"; if (weaponsModeActive.boolValue) { weaponsModeActiveText = "YES"; } GUILayout.Label ("Weapons Mode Active\t\t" + weaponsModeActiveText); GUILayout.Label ("FBA Active\t\t\t" + fullBodyAwarenessActive.boolValue); GUILayout.Label ("First Person Active \t\t" + firstPersonActive.boolValue); EditorGUILayout.Space (); GUILayout.BeginVertical ("Single Weapon State", "window"); GUILayout.Label ("Current Weapon \t\t" + currentWeaponText); shootingWeapon = "NO"; if (shootingSingleWeapon.boolValue) { shootingWeapon = "YES"; } GUILayout.Label ("Shooting Weapon \t\t" + shootingWeapon); GUILayout.Label ("Weapon Index \t\t\t" + choosedWeapon.intValue); GUILayout.Label ("Using Free Fire Mode \t\t" + usingFreeFireMode.boolValue); EditorGUILayout.PropertyField (currentIKWeapon); EditorGUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Dual Weapon State", "window"); GUILayout.Label ("Using Dual Weapons \t\t" + usingDualWeapon.boolValue); GUILayout.Label ("Current R Weapon \t\t" + currentRighWeaponName.stringValue); GUILayout.Label ("Current L Weapon \t\t" + currentLeftWeaponName.stringValue); GUILayout.Label ("Shooting R Weapon \t\t" + shootingRightWeapon.boolValue); GUILayout.Label ("Shooting L Weapon \t\t" + shootingLeftWeapon.boolValue); GUILayout.Label ("Dual Slot Index \t\t\t" + chooseDualWeaponIndex.intValue); EditorGUILayout.PropertyField (currentRightIKWeapon); EditorGUILayout.PropertyField (currentLeftIkWeapon); EditorGUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.EndVertical (); EditorGUILayout.Space (); style.fontStyle = FontStyle.Bold; style.fontSize = 30; style.alignment = TextAnchor.MiddleCenter; buttonColor = GUI.backgroundColor; EditorGUILayout.BeginVertical (); if (showMainSettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Main Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Main Settings"; } if (GUILayout.Button (inputListOpenedText)) { showMainSettings.boolValue = !showMainSettings.boolValue; } if (showWeaponsList.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Weapons List"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Weapons List"; } if (GUILayout.Button (inputListOpenedText)) { showWeaponsList.boolValue = !showWeaponsList.boolValue; } if (showElementSettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Element Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Element Settings"; } if (GUILayout.Button (inputListOpenedText)) { showElementSettings.boolValue = !showElementSettings.boolValue; } if (showDebugSettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Debug Options"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Debug Options"; } if (GUILayout.Button (inputListOpenedText)) { showDebugSettings.boolValue = !showDebugSettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (GUILayout.Button ("Select Weapons On Editor")) { manager.selectFirstWeaponGameObjectOnEditor (); } if (showMainSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("MAIN SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("box"); EditorGUILayout.Space (); GUI.color = Color.cyan; EditorGUILayout.HelpBox ("Configure the max amount of weapons and the layer used in weapons", MessageType.None); GUI.color = Color.white; EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Main Settings", "window"); EditorGUILayout.PropertyField (weaponsSlotsAmount); EditorGUILayout.PropertyField (weaponsLayer); EditorGUILayout.PropertyField (setWeaponWhenPicked); EditorGUILayout.PropertyField (canGrabObjectsCarryingWeapons); EditorGUILayout.PropertyField (drawKeepWeaponWhenModeChanged); EditorGUILayout.PropertyField (changeWeaponsWithNumberKeysActive); EditorGUILayout.PropertyField (changeWeaponsWithMouseWheelActive); EditorGUILayout.PropertyField (changeWeaponsWithKeysActive); EditorGUILayout.PropertyField (ignoreUseDrawKeepWeaponAnimation); EditorGUILayout.PropertyField (forceWeaponToUseQuickDrawKeepWeaponActive); EditorGUILayout.PropertyField (useDrawKeepWeaponAnimationOnAllWeaponsOnFBA); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Empty Ammo Current Weapon Settings", "window"); EditorGUILayout.PropertyField (changeToNextWeaponIfAmmoEmpty); EditorGUILayout.PropertyField (removeCurrentWeaponAsNotUsableIfAmmoEmptyEnabled); EditorGUILayout.Space (); EditorGUILayout.PropertyField (useEventOnEmptyAmmoOnCurrentWeapon); if (useEventOnEmptyAmmoOnCurrentWeapon.boolValue) { EditorGUILayout.PropertyField (eventOnEmptyAmmoOnCurrentWeapon); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Target Detection Settings", "window"); EditorGUILayout.PropertyField (targetToDamageLayer); EditorGUILayout.PropertyField (targetForScorchLayer); EditorGUILayout.Space (); EditorGUILayout.PropertyField (useCustomLayerToCheck); if (useCustomLayerToCheck.boolValue) { EditorGUILayout.PropertyField (customLayerToCheck); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (useCustomIgnoreTags); if (useCustomIgnoreTags.boolValue) { showSimpleList (customTagsToIgnoreList, "Custom Tags To Ignore List"); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon HUD Settings", "window"); EditorGUILayout.PropertyField (weaponsHUDEnabled); EditorGUILayout.PropertyField (disableWeaponsHUDAfterDelayEnabled); if (disableWeaponsHUDAfterDelayEnabled.boolValue) { EditorGUILayout.PropertyField (delayToDisableWeaponsHUD); } EditorGUILayout.PropertyField (showRemainAmmoText); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon Reticle Settings", "window"); EditorGUILayout.PropertyField (weaponCursorActive); EditorGUILayout.PropertyField (useWeaponCursorUnableToShootThirdPerson); EditorGUILayout.PropertyField (useWeaponCursorUnableToShootFirstPerson); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon Management Settings", "window"); EditorGUILayout.PropertyField (canFireWeaponsWithoutAiming); EditorGUILayout.PropertyField (drawWeaponIfFireButtonPressed); EditorGUILayout.PropertyField (drawAndAimWeaponIfFireButtonPressed); EditorGUILayout.PropertyField (keepWeaponAfterDelayThirdPerson); EditorGUILayout.PropertyField (keepWeaponAfterDelayFirstPerson); if (keepWeaponAfterDelayThirdPerson.boolValue || keepWeaponAfterDelayFirstPerson.boolValue) { EditorGUILayout.PropertyField (keepWeaponDelay); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (useQuickDrawWeapon); EditorGUILayout.PropertyField (timeToStopAimAfterStopFiring); EditorGUILayout.PropertyField (useAimCameraOnFreeFireMode); EditorGUILayout.Space (); EditorGUILayout.PropertyField (pivotPointRotationActive); if (pivotPointRotationActive.boolValue) { EditorGUILayout.PropertyField (pivotPointRotationSpeed); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (runWhenAimingWeaponInThirdPerson); if (runWhenAimingWeaponInThirdPerson.boolValue) { EditorGUILayout.PropertyField (stopRunIfPreviouslyNotRunning); EditorGUILayout.PropertyField (runAlsoWhenFiringWithoutAiming); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (canJumpWhileAimingThirdPerson); EditorGUILayout.PropertyField (canAimOnAirThirdPerson); EditorGUILayout.PropertyField (stopAimingOnAirThirdPerson); EditorGUILayout.Space (); EditorGUILayout.PropertyField (ignoreParentWeaponOutsidePlayerBodyWhenNotActive); EditorGUILayout.PropertyField (keepLookAtTargetActiveWhenFiringWithoutAiming); EditorGUILayout.Space (); EditorGUILayout.PropertyField (useCameraShakeOnShootEnabled); EditorGUILayout.PropertyField (ignoreNewAnimatorWeaponIDSettings); EditorGUILayout.PropertyField (ignoreUpperBodyRotationSystem); EditorGUILayout.PropertyField (ignoreShakeUpperBodyEnabled); EditorGUILayout.PropertyField (fullBodyAwarenessWeaponsParentOffsetPosition); EditorGUILayout.Space (); EditorGUILayout.PropertyField (overrideOptionToHideWeaponMeshWhenNotUsed); if (overrideOptionToHideWeaponMeshWhenNotUsed.boolValue) { EditorGUILayout.PropertyField (hideWeaponMeshWhenNotUsed); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Dual Wield Fire Weapons Settings", "window"); EditorGUILayout.PropertyField (activateDualWeaponsEnabled); EditorGUILayout.Space (); EditorGUILayout.PropertyField (shootDualWeaponsWithSingleInputEnabled); EditorGUILayout.PropertyField (aimDualWeaponsWithRightShootInputEnabled); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapons Collision Detection Settings", "window"); EditorGUILayout.PropertyField (ignoreCheckSurfaceCollisionThirdPerson); EditorGUILayout.PropertyField (ignoreCheckSurfaceCollisionFirstPerson); EditorGUILayout.Space (); EditorGUILayout.PropertyField (useExtraColliderOnFireWeaponOnFBA); EditorGUILayout.PropertyField (useExtraColliderOnFireWeaponsOnThirdPerson); if (useExtraColliderOnFireWeaponOnFBA.boolValue || useExtraColliderOnFireWeaponsOnThirdPerson.boolValue) { EditorGUILayout.PropertyField (extraColliderOnFireWeaponOnFBATransform); EditorGUILayout.PropertyField (extraColliderOnFireWeaponOnFBA); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapons Input Settings", "window"); EditorGUILayout.PropertyField (fireWeaponsInputActive); EditorGUILayout.PropertyField (generalWeaponsInputActive); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Objects Durability Settings", "window"); EditorGUILayout.PropertyField (checkDurabilityOnObjectEnabled); EditorGUILayout.Space (); EditorGUILayout.PropertyField (useEventOnDurabilityEmptyOnMeleeWeapon); if (useEventOnDurabilityEmptyOnMeleeWeapon.boolValue) { EditorGUILayout.PropertyField (eventOnDurabilityEmptyOnMeleeWeapon); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Inventory Settings", "window"); EditorGUILayout.PropertyField (storePickedWeaponsOnInventory); EditorGUILayout.PropertyField (drawWeaponWhenPicked); EditorGUILayout.PropertyField (drawPickedWeaponOnlyItNotPreviousWeaponEquipped); EditorGUILayout.PropertyField (changeToNextWeaponWhenEquipped); EditorGUILayout.PropertyField (changeToNextWeaponWhenUnequipped); EditorGUILayout.PropertyField (notActivateWeaponsAtStart); EditorGUILayout.PropertyField (canStoreAnyNumberSameWeapon); EditorGUILayout.PropertyField (useAmmoFromInventoryInAllWeapons); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Attachment Settings", "window"); EditorGUILayout.PropertyField (openWeaponAttachmentsMenuEnabled); EditorGUILayout.PropertyField (setFirstPersonForAttachmentEditor); EditorGUILayout.PropertyField (useUniversalAttachments); EditorGUILayout.PropertyField (openWeaponAttachmentsMenuPaused); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Initial Weapon Settings", "window"); EditorGUILayout.PropertyField (startGameWithCurrentWeapon); if (startGameWithCurrentWeapon.boolValue) { EditorGUILayout.PropertyField (drawInitialWeaponSelected); EditorGUILayout.PropertyField (startWithFirstWeaponAvailable); if (!startWithFirstWeaponAvailable.boolValue) { EditorGUILayout.PropertyField (startGameWithDualWeapons); if (avaliableWeaponList.arraySize > 0) { if (startGameWithDualWeapons.boolValue) { if (rightWeaponToStartIndex.intValue < manager.avaliableWeaponList.Length && leftWeaponToStartIndex.intValue < manager.avaliableWeaponList.Length) { rightWeaponToStartIndex.intValue = EditorGUILayout.Popup ("Right Weapon To Start", rightWeaponToStartIndex.intValue, manager.avaliableWeaponList); rightWeaponToStartName.stringValue = manager.avaliableWeaponList [rightWeaponToStartIndex.intValue]; leftWeaponToStartIndex.intValue = EditorGUILayout.Popup ("Left Weapon To Start", leftWeaponToStartIndex.intValue, manager.avaliableWeaponList); leftWeaponToStartName.stringValue = manager.avaliableWeaponList [leftWeaponToStartIndex.intValue]; } } else { EditorGUILayout.PropertyField (startWithRandomWeapon); EditorGUILayout.Space (); if (weaponToStartIndex.intValue < manager.avaliableWeaponList.Length) { weaponToStartIndex.intValue = EditorGUILayout.Popup ("Weapon To Start", weaponToStartIndex.intValue, manager.avaliableWeaponList); weaponToStartName.stringValue = manager.avaliableWeaponList [weaponToStartIndex.intValue]; } } } EditorGUILayout.Space (); if (GUILayout.Button ("Update Available Weapon List")) { if (!Application.isPlaying) { // if (storePickedWeaponsOnInventory.boolValue) { // manager.getWeaponListString (); // } else { manager.getAvailableWeaponListString (); // } } } } } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Drop Weapon Settings", "window"); EditorGUILayout.PropertyField (canDropWeapons); EditorGUILayout.PropertyField (changeToNextWeaponWhenDrop); EditorGUILayout.PropertyField (dropWeaponForceThirdPerson); EditorGUILayout.PropertyField (dropWeaponForceFirstPerson); EditorGUILayout.PropertyField (holdDropButtonToIncreaseForce); if (holdDropButtonToIncreaseForce.boolValue) { EditorGUILayout.PropertyField (dropIncreaseForceSpeed); EditorGUILayout.PropertyField (maxDropForce); } EditorGUILayout.PropertyField (dropWeaponInventoryObjectsPickups); EditorGUILayout.PropertyField (throwWeaponInCameraDirectionEnabled); EditorGUILayout.Space (); EditorGUILayout.PropertyField (checkAimOnThrowWeaponStateEnabled); if (checkAimOnThrowWeaponStateEnabled.boolValue) { EditorGUILayout.PropertyField (headTrackBodyWeightOnAimOnThrowWeapon); EditorGUILayout.PropertyField (customAimReticleName); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Death Settings", "window"); EditorGUILayout.PropertyField (dropCurrentWeaponWhenDie); EditorGUILayout.PropertyField (dropAllWeaponsWhenDie); EditorGUILayout.PropertyField (dropWeaponsOnlyIfUsing); EditorGUILayout.PropertyField (drawWeaponWhenResurrect); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Mark Targets Settings", "window"); EditorGUILayout.PropertyField (canMarkTargets); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Aim Assist Settings", "window"); EditorGUILayout.PropertyField (useAimAssistInThirdPerson); EditorGUILayout.PropertyField (useAimAssistInFirstPerson); EditorGUILayout.PropertyField (useMaxDistanceToCameraCenterAimAssist); if (useMaxDistanceToCameraCenterAimAssist.boolValue) { EditorGUILayout.PropertyField (maxDistanceToCameraCenterAimAssist); } EditorGUILayout.PropertyField (useAimAssistInLockedCamera); EditorGUILayout.PropertyField (aimAssistLookAtTargetSpeed); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapons Stats Settings", "window"); EditorGUILayout.PropertyField (damageMultiplierStat); EditorGUILayout.PropertyField (extraDamageStat); EditorGUILayout.PropertyField (spreadMultiplierStat); EditorGUILayout.PropertyField (fireRateMultiplierStat); EditorGUILayout.PropertyField (extraReloadSpeedStat); EditorGUILayout.PropertyField (magazineExtraSizeStat); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapons Message Settings", "window"); EditorGUILayout.PropertyField (cantPickWeaponMessage); EditorGUILayout.PropertyField (cantDropCurrentWeaponMessage); EditorGUILayout.PropertyField (cantPickAttachmentMessage); EditorGUILayout.PropertyField (weaponMessageDuration); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapons Mode Active Event Settings", "window"); EditorGUILayout.PropertyField (useEventsOnStateChange); if (useEventsOnStateChange.boolValue) { EditorGUILayout.PropertyField (evenOnStateEnabled); EditorGUILayout.PropertyField (eventOnStateDisabled); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Stolen Weapon Settings", "window"); EditorGUILayout.PropertyField (weaponsCanBeStolenFromCharacter); EditorGUILayout.PropertyField (useEventOnWeaponStolen); if (useEventOnWeaponStolen.boolValue) { EditorGUILayout.PropertyField (eventOnWeaponStolen); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Save/Load Weapons Settings", "window"); EditorGUILayout.PropertyField (loadCurrentPlayerWeaponsFromSaveFile); EditorGUILayout.PropertyField (saveCurrentPlayerWeaponsToSaveFile); EditorGUILayout.Space (); EditorGUILayout.PropertyField (loadWeaponAttachmentsInfoFromSaveFile); EditorGUILayout.PropertyField (saveWeaponAttachmentsInfoToSaveFile); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Touch Settings", "window"); EditorGUILayout.PropertyField (minSwipeDist); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("AI Settings", "window"); EditorGUILayout.PropertyField (usedByAI); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.EndVertical (); } if (showWeaponsList.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("WEAPON LIST", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("box"); EditorGUILayout.Space (); GUI.color = Color.cyan; EditorGUILayout.HelpBox ("Configure every weapon added to the character", MessageType.None); GUI.color = Color.white; EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Usable Weapon Prefab List", "window"); EditorGUILayout.PropertyField (useUsableWeaponPrefabInfoList); if (useUsableWeaponPrefabInfoList.boolValue) { showUsableWeaponPrefabInfoList (usableWeaponPrefabInfoList); EditorGUILayout.Space (); if (GUILayout.Button ("Instantiate Weapons On Character")) { manager.instantiateUsableWeaponPrefabInfoListFromEditor (); } } GUILayout.EndVertical (); EditorGUILayout.Space (); EditorGUILayout.Space (); style.fontStyle = FontStyle.Bold; style.fontSize = 20; style.alignment = TextAnchor.MiddleLeft; GUILayout.BeginVertical ("Weapon List", "window"); showWeaponList (weaponsList); EditorGUILayout.Space (); if (GUILayout.Button ("Get Weapon List")) { manager.setWeaponList (); } EditorGUILayout.Space (); if (GUILayout.Button ("Clear Weapon List")) { manager.clearWeaponList (); } EditorGUILayout.Space (); if (GUILayout.Button ("Save Weapon List")) { manager.saveCurrentWeaponListToFile (); } EditorGUILayout.Space (); if (GUILayout.Button ("Enable Weapon GameObject List")) { manager.enableOrDisableWeaponGameObjectList (true); } EditorGUILayout.Space (); if (GUILayout.Button ("Disable Weapon GameObject List")) { manager.enableOrDisableWeaponGameObjectList (false); } EditorGUILayout.Space (); if (GUILayout.Button ("Remove Weapons From Character's Body")) { manager.removeWeaponsFromPlayerBody (); Repaint (); return; } EditorGUILayout.Space (); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon Pocket List", "window"); EditorGUILayout.PropertyField (useWeaponPocketEnabled); EditorGUILayout.Space (); if (useWeaponPocketEnabled.boolValue) { showWeaponPocketList (weaponPocketList); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Position On Character Offset Settings", "window"); EditorGUILayout.PropertyField (currentOffsetParentThirdPerson); EditorGUILayout.Space (); if (GUILayout.Button ("Set Current Offset Parent Third Person")) { manager.setCurrentOffsetParentOnThirdPersonOnAllWeapons (); } EditorGUILayout.Space (); if (GUILayout.Button ("Adjust Draw/Keep Position To Weapon Position")) { manager.adjustDrawKeepPositionToWeaponPositionOnAllWeapons (); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.EndVertical (); } if (showElementSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("ELEMENTS SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("box"); EditorGUILayout.Space (); GUI.color = Color.cyan; EditorGUILayout.HelpBox ("Configure every gameObject used for the weapons", MessageType.None); GUI.color = Color.white; EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("HUD Elements", "window"); EditorGUILayout.PropertyField (weaponsHUD); EditorGUILayout.PropertyField (singleWeaponHUD); EditorGUILayout.Space (); EditorGUILayout.PropertyField (currentWeaponNameText); EditorGUILayout.PropertyField (currentWeaponAmmoText); EditorGUILayout.PropertyField (useRemainAmmoWeaponText); if (useRemainAmmoWeaponText.boolValue) { EditorGUILayout.PropertyField (remainAmmoWeaponText); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (ammoSlider); EditorGUILayout.PropertyField (currentWeaponIcon); EditorGUILayout.PropertyField (attachmentPanel); EditorGUILayout.PropertyField (attachmentAmmoText); EditorGUILayout.PropertyField (currentAttachmentIcon); EditorGUILayout.PropertyField (dualWeaponHUD); EditorGUILayout.PropertyField (currentRightWeaponAmmoText); EditorGUILayout.PropertyField (rightAttachmentPanel); EditorGUILayout.PropertyField (rigthAttachmentAmmoText); EditorGUILayout.PropertyField (currentRightAttachmentIcon); EditorGUILayout.PropertyField (currentLeftWeaponAmmoText); EditorGUILayout.PropertyField (leftAttachmentPanel); EditorGUILayout.PropertyField (leftAttachmentAmmoText); EditorGUILayout.PropertyField (currentLeftAttachmentIcon); EditorGUILayout.PropertyField (weaponsParent); EditorGUILayout.PropertyField (weaponsTransformInFirstPerson); EditorGUILayout.PropertyField (weaponsTransformInThirdPerson); EditorGUILayout.PropertyField (thirdPersonParent); EditorGUILayout.PropertyField (firstPersonParent); EditorGUILayout.PropertyField (cameraController); EditorGUILayout.PropertyField (weaponsCamera); EditorGUILayout.PropertyField (weaponCursor); EditorGUILayout.PropertyField (cursorRectTransform); EditorGUILayout.PropertyField (weaponCursorRegular); EditorGUILayout.PropertyField (weaponCursorAimingInFirstPerson); EditorGUILayout.PropertyField (weaponCursorUnableToShoot); EditorGUILayout.PropertyField (weaponCustomReticle); EditorGUILayout.PropertyField (weaponsMessageWindow); EditorGUILayout.PropertyField (mainObjectTransformData); EditorGUILayout.PropertyField (temporalParentForWeapons); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Player Elements", "window"); EditorGUILayout.PropertyField (pauseManager); EditorGUILayout.PropertyField (playerScreenObjectivesManager); EditorGUILayout.PropertyField (playerCameraManager); EditorGUILayout.PropertyField (headBobManager); EditorGUILayout.PropertyField (playerInput); EditorGUILayout.PropertyField (IKManager); EditorGUILayout.PropertyField (playerManager); EditorGUILayout.PropertyField (upperBodyRotationManager); EditorGUILayout.PropertyField (headTrackManager); EditorGUILayout.PropertyField (grabObjectsManager); EditorGUILayout.PropertyField (playerInventoryManager); EditorGUILayout.PropertyField (usingDevicesManager); EditorGUILayout.PropertyField (mainCollider); EditorGUILayout.PropertyField (ragdollManager); EditorGUILayout.PropertyField (mainCameraTransform); EditorGUILayout.PropertyField (mainCamera); EditorGUILayout.PropertyField (mainWeaponListManager); EditorGUILayout.PropertyField (mainSimpleSniperSightSystem); EditorGUILayout.PropertyField (mainDynamicReticleSystem); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("IK Hands Transform", "window"); EditorGUILayout.PropertyField (rightHandTransform); EditorGUILayout.PropertyField (leftHandTransform); EditorGUILayout.PropertyField (rightHandMountPoint); EditorGUILayout.PropertyField (leftHandMountPoint); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.EndVertical (); } if (showDebugSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("DEBUG OPTIONS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("box"); EditorGUILayout.Space (); GUI.color = Color.cyan; EditorGUILayout.HelpBox ("Debug options for weapon in-game", MessageType.None); GUI.color = Color.white; EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Debug Controls", "window"); EditorGUILayout.PropertyField (showDebugLog); // GUILayout.BeginHorizontal (); // if (GUILayout.Button ("Set Next Weapon")) { // manager.chooseNextWeapon (false, true); // } // if (GUILayout.Button ("Set Previous Weapon")) { // manager.choosePreviousWeapon (false, true); // } // GUILayout.EndHorizontal (); // GUILayout.BeginHorizontal (); // if (GUILayout.Button ("Draw/Keep Weapon")) { // manager.drawOrKeepWeaponInput (); // } // if (GUILayout.Button ("Drop Weapon")) { // manager.dropWeaponByBebugButton (); // } // GUILayout.EndHorizontal (); // if (GUILayout.Button ("Aim Weapon")) { // manager.aimCurrentWeaponInput (); // } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.EndVertical (); } EditorGUILayout.Space (); if (EditorGUI.EndChangeCheck ()) { serializedObject.ApplyModifiedProperties (); Repaint (); } } void showWeaponListElementInfo (SerializedProperty list) { _currentIKWeapon = list.objectReferenceValue as IKWeaponSystem; if (_currentIKWeapon != null) { GUILayout.BeginVertical (); GUILayout.Label (_currentIKWeapon.weaponSystemManager.weaponSettings.Name, style); EditorGUILayout.PropertyField (list, new GUIContent ("", null, ""), false); _currentIKWeapon.weaponEnabled = EditorGUILayout.Toggle ("Enabled", _currentIKWeapon.weaponEnabled); _currentIKWeapon.weaponSystemManager.weaponSettings.numberKey = EditorGUILayout.IntField ("Number Key:", _currentIKWeapon.weaponSystemManager.weaponSettings.numberKey); GUILayout.Label ("Is Current Weapon\t" + _currentIKWeapon.currentWeapon); EditorUtility.SetDirty (_currentIKWeapon); GUILayout.EndVertical (); } } void showWeaponList (SerializedProperty list) { EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Expand All")) { list.isExpanded = true; } if (GUILayout.Button ("Collapse All")) { list.isExpanded = false; } GUILayout.EndHorizontal (); EditorGUILayout.Space (); if (list.isExpanded) { GUILayout.BeginVertical ("box"); EditorGUILayout.Space (); GUILayout.Label ("Number Of Weapons: \t" + list.arraySize); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { EditorGUILayout.Space (); GUILayout.BeginHorizontal (); GUILayout.BeginHorizontal ("box"); if (i < list.arraySize && i >= 0) { EditorGUILayout.BeginVertical (); showWeaponListElementInfo (list.GetArrayElementAtIndex (i)); GUILayout.EndVertical (); } GUILayout.EndHorizontal (); GUILayout.BeginVertical (); if (GUILayout.Button ("x")) { manager.removeWeaponFromList (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 (GUILayout.Button ("O")) { manager.selectWeaponOnListInEditor (i); } GUILayout.EndVertical (); GUILayout.EndHorizontal (); } EditorGUILayout.Space (); if (weaponsList.arraySize > 0) { if (GUILayout.Button ("Enable All Weapons")) { manager.enableOrDisableWeaponsList (true); } EditorGUILayout.Space (); if (GUILayout.Button ("Disable All Weapon")) { manager.enableOrDisableWeaponsList (false); } EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Expand All")) { list.isExpanded = true; } if (GUILayout.Button ("Collapse All")) { list.isExpanded = false; } GUILayout.EndHorizontal (); EditorGUILayout.Space (); } EditorGUILayout.Space (); GUILayout.EndVertical (); } } void showWeaponPocketList (SerializedProperty list) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number Of Pockets: \t" + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add Pocket")) { manager.addPocket (); } 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 (); EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false); if (list.GetArrayElementAtIndex (i).isExpanded) { expanded = true; showWeaponListOnPocket (list.GetArrayElementAtIndex (i), i); } EditorGUILayout.Space (); GUILayout.EndVertical (); } GUILayout.EndHorizontal (); if (expanded) { GUILayout.BeginVertical (); } else { GUILayout.BeginHorizontal (); } if (GUILayout.Button ("x")) { manager.removePocket (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 showWeaponListOnPocket (SerializedProperty list, int index) { GUILayout.BeginVertical ("box"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("pocketTransform")); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapons On Pocket List", "window"); showWeaponOnPocketList (list.FindPropertyRelative ("weaponOnPocketList"), index); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.EndVertical (); } void showWeaponOnPocketList (SerializedProperty list, int index) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number Of Subpockets: \t" + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add Subpocket")) { manager.addSubPocket (index); } if (GUILayout.Button ("Clear List")) { 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.BeginVertical ("box"); if (i < list.arraySize && i >= 0) { EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false); if (list.GetArrayElementAtIndex (i).isExpanded) { expanded = true; showWeaponOnPocketListElement (list.GetArrayElementAtIndex (i), index, i); } } GUILayout.EndVertical (); GUILayout.BeginHorizontal (); if (expanded) { GUILayout.BeginVertical (); } else { GUILayout.BeginHorizontal (); } if (GUILayout.Button ("x")) { manager.removeSubPocket (index, 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.EndHorizontal (); } } GUILayout.EndVertical (); } void showWeaponOnPocketListElement (SerializedProperty list, int pocketIndex, int subPocketIndex) { GUILayout.BeginVertical ("box"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon List", "window"); showWeaponOnPocketListElementList (list.FindPropertyRelative ("weaponList"), pocketIndex, subPocketIndex); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.EndVertical (); } void showWeaponOnPocketListElementList (SerializedProperty list, int pocketIndex, int subPocketIndex) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number Of Weapons: \t" + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add Weapon")) { list.arraySize++; } if (GUILayout.Button ("Clear List")) { list.arraySize = 0; } GUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { GUILayout.BeginHorizontal (); GUILayout.BeginVertical ("box"); if (i < list.arraySize && i >= 0) { string weaponName = "Weapon " + i; if (list.GetArrayElementAtIndex (i).objectReferenceValue) { weaponName = list.GetArrayElementAtIndex (i).objectReferenceValue.name; } EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), new GUIContent (weaponName), false); } GUILayout.EndVertical (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("x")) { manager.removeWeaponFromSubPocket (pocketIndex, subPocketIndex, 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); } } GUILayout.EndHorizontal (); GUILayout.EndHorizontal (); } } GUILayout.EndVertical (); } void showSimpleList (SerializedProperty list, string listName) { EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number Of " + listName + "s: \t" + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add " + listName)) { 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); } 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 (); } } } void showUsableWeaponPrefabInfoList (SerializedProperty list) { GUILayout.BeginVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.Label ("Number Of Weapon Prefabs: \t" + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add Weapon")) { list.arraySize++; } if (GUILayout.Button ("Clear List")) { 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.BeginVertical ("box"); if (i < list.arraySize && i >= 0) { EditorGUILayout.PropertyField (list.GetArrayElementAtIndex (i), false); if (list.GetArrayElementAtIndex (i).isExpanded) { expanded = true; showUsableWeaponPrefabInfoListElement (list.GetArrayElementAtIndex (i)); } } GUILayout.EndVertical (); GUILayout.BeginHorizontal (); 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.EndHorizontal (); } } GUILayout.EndVertical (); } void showUsableWeaponPrefabInfoListElement (SerializedProperty list) { GUILayout.BeginVertical ("box"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("usableWeaponPrefab")); GUILayout.EndVertical (); } } #endif