using UnityEngine; using System.Collections; #if UNITY_EDITOR using UnityEditor; [CustomEditor (typeof (IKWeaponSystem))] public class IKWeaponSystemEditor : Editor { SerializedProperty weaponEnabled; SerializedProperty currentWeapon; SerializedProperty carrying; SerializedProperty aiming; SerializedProperty moving; SerializedProperty actionActive; SerializedProperty IKPausedOnHandsActive; SerializedProperty surfaceDetected; SerializedProperty weaponInRunPosition; SerializedProperty jumpingOnProcess; SerializedProperty playerOnJumpStart; SerializedProperty playerOnJumpEnd; SerializedProperty crouchingActive; SerializedProperty reloadingWeapon; SerializedProperty weaponUpdateActive; SerializedProperty usingDualWeapon; SerializedProperty disablingDualWeapon; SerializedProperty usingRightHandDualWeapon; SerializedProperty weaponConfiguredAsDualWeapon; SerializedProperty linkedDualWeaponName; SerializedProperty showSettings; SerializedProperty showElementSettings; SerializedProperty showPrefabSettings; SerializedProperty weaponGameObject; SerializedProperty extraRotation; SerializedProperty aimFovValue; SerializedProperty aimFovSpeed; SerializedProperty hideWeaponIfKeptInThirdPerson; SerializedProperty canBeDropped; SerializedProperty canUnlockCursor; SerializedProperty canUnlockCursorOnThirdPerson; SerializedProperty disableHUDWhenCursorUnlocked; SerializedProperty weaponSystemManager; SerializedProperty weaponsManager; SerializedProperty weaponTransform; SerializedProperty layer; SerializedProperty weaponUsesAttachment; SerializedProperty mainWeaponAttachmentSystem; SerializedProperty showThirdPersonSettings; SerializedProperty thirdPersonWeaponInfo; SerializedProperty thirdPersonUseSwayInfo; SerializedProperty showSwaySettings; SerializedProperty thirdPersonUseRunPosition; SerializedProperty thirdPersonUseRunSwayInfo; SerializedProperty showWalkSwaySettings; SerializedProperty thirdPersonSwayInfo; SerializedProperty showRunSwaySettings; SerializedProperty showFullBodyAwarernessSettings; SerializedProperty runThirdPersonSwayInfo; SerializedProperty showFirstPersonSettings; SerializedProperty firstPersonWeaponInfo; SerializedProperty firstPersonUseSwayInfo; SerializedProperty firstPersonUseRunPosition; SerializedProperty firstPersonUseRunSwayInfo; SerializedProperty firstPersonSwayInfo; SerializedProperty runFirstPersonSwayInfo; SerializedProperty showIdleSettings; SerializedProperty useWeaponIdle; SerializedProperty timeToActiveWeaponIdle; SerializedProperty idlePositionAmount; SerializedProperty idleRotationAmount; SerializedProperty idleSpeed; SerializedProperty playerMoving; SerializedProperty idleActive; SerializedProperty showShotShakeSettings; SerializedProperty showShotCameraNoiseSettings; SerializedProperty sameValueBothViews; SerializedProperty thirdPersonshotShakeInfo; SerializedProperty useShotShakeInThirdPerson; SerializedProperty useShotShakeInFirstPerson; SerializedProperty firstPersonshotShakeInfo; SerializedProperty useShotCameraNoise; SerializedProperty useShotCameraNoiseDuration; SerializedProperty shotCameraNoiseDuration; SerializedProperty showThirdPersonGizmo; SerializedProperty showFirstPersonGizmo; SerializedProperty showCollisionDetectionGizmo; SerializedProperty showEditAttachmentGizmo; SerializedProperty showMainWeaponPositionsGizmo; SerializedProperty showFBAGizmo; SerializedProperty showFBAWalkGizmo; SerializedProperty showFBAAimGizmo; SerializedProperty showFBACrouchGizmo; SerializedProperty showFBAJumpGizmo; SerializedProperty showFBARunGizmo; SerializedProperty showFBAObstacleGizmo; SerializedProperty gizmoLabelColor; SerializedProperty showHandsWaypointGizmo; SerializedProperty showWeaponWaypointGizmo; SerializedProperty showPositionGizmo; SerializedProperty thirdPersonUseHandle; SerializedProperty thirdPersonHandleRadius; SerializedProperty thirdPersonHandleGizmoColor; SerializedProperty thirdPersonUsePositionHandle; SerializedProperty firstPersonUseHandle; SerializedProperty firstPersonHandleRadius; SerializedProperty firstPersonHandleGizmoColor; SerializedProperty firstPersonUsePositionHandle; SerializedProperty relativePathWeaponsPickups; SerializedProperty emtpyWeaponPrefab; SerializedProperty weaponPrefabModel; SerializedProperty inventoryWeaponPrefabObject; SerializedProperty relativePathWeaponsMesh; SerializedProperty relativePathWeaponsAmmoMesh; SerializedProperty inventoryWeaponCategoryName; SerializedProperty weaponName; SerializedProperty inventoryAmmoCategoryName; SerializedProperty ammoAmountPerPickup; SerializedProperty weaponAmmoMesh; SerializedProperty weaponAmmoIconTexture; SerializedProperty useLowerRotationSpeedAimedThirdPerson; SerializedProperty verticalRotationSpeedAimedInThirdPerson; SerializedProperty horizontalRotationSpeedAimedInThirdPerson; SerializedProperty canAimInFirstPerson; SerializedProperty useLowerRotationSpeedAimed; SerializedProperty verticalRotationSpeedAimedInFirstPerson; SerializedProperty horizontalRotationSpeedAimedInFirstPerson; SerializedProperty firstPersonArms; SerializedProperty disableOnlyFirstPersonArmsMesh; SerializedProperty firstPersonArmsMesh; SerializedProperty extraFirstPersonArmsMeshes; SerializedProperty useWeaponAnimatorFirstPerson; SerializedProperty mainWeaponAnimatorSystem; SerializedProperty thirdPersonDeactivateIKDrawPath; SerializedProperty thirdPersonMeleeAttackShakeInfo; SerializedProperty firstPersonMeleeAttackShakeInfo; SerializedProperty thirdPersonKeepPath; SerializedProperty thirdPersonHandsInfo; SerializedProperty headLookWhenAiming; SerializedProperty headLookSpeed; SerializedProperty headLookTarget; SerializedProperty rightHandMountPoint; SerializedProperty leftHandMountPoint; SerializedProperty setNewAnimatorWeaponID; SerializedProperty newAnimatorWeaponID; SerializedProperty setNewAnimatorDualWeaponID; SerializedProperty newAnimatorDualWeaponID; SerializedProperty setUpperBodyBendingMultiplier; SerializedProperty horizontalBendingMultiplier; SerializedProperty verticalBendingMultiplier; SerializedProperty followFullRotationPointDirection; SerializedProperty followFullRotationClampX; SerializedProperty followFullRotationClampY; SerializedProperty followFullRotationClampZ; SerializedProperty setNewAnimatorCrouchID; SerializedProperty newAnimatorCrouchID; SerializedProperty ignoreCrouchWhileWeaponActive; SerializedProperty pivotPointRotationActive; SerializedProperty useNewMaxAngleDifference; SerializedProperty horizontalMaxAngleDifference; SerializedProperty verticalMaxAngleDifference; SerializedProperty extraColliderScaleOnFireWeaponOnFBA; SerializedProperty extraColliderCenterOnFireWeaponOnFBA; SerializedProperty fullBodyAwarenessActive; IKWeaponSystem IKWeaponManager; GUIStyle style = new GUIStyle (); GUIStyle gizmoStyle = new GUIStyle (); GUIStyle sectionStyle = new GUIStyle (); bool showElbowInfo; bool showSingleWeaponSettings; bool showDualWeaponSettings; Color buttonColor; Vector3 oldPoint; Vector3 newPoint; Color listButtonBackgroundColor; string inputListOpenedText; bool expanded; Vector3 curretPositionHandle; Quaternion currentRotationHandle; Vector3 currentFreeHandlePosition; Vector3 newFreeHandlePosition; Vector3 snapValue = new Vector3 (.25f, .25f, .25f); float thirdPersonHandleRadiusValue; float firstPersonHandleRadiusValue; GUIStyle buttonStyle = new GUIStyle (); void OnEnable () { weaponEnabled = serializedObject.FindProperty ("weaponEnabled"); currentWeapon = serializedObject.FindProperty ("currentWeapon"); carrying = serializedObject.FindProperty ("carrying"); aiming = serializedObject.FindProperty ("aiming"); actionActive = serializedObject.FindProperty ("actionActive"); moving = serializedObject.FindProperty ("moving"); IKPausedOnHandsActive = serializedObject.FindProperty ("IKPausedOnHandsActive"); surfaceDetected = serializedObject.FindProperty ("surfaceDetected"); weaponInRunPosition = serializedObject.FindProperty ("weaponInRunPosition"); jumpingOnProcess = serializedObject.FindProperty ("jumpingOnProcess"); playerOnJumpStart = serializedObject.FindProperty ("playerOnJumpStart"); playerOnJumpEnd = serializedObject.FindProperty ("playerOnJumpEnd"); crouchingActive = serializedObject.FindProperty ("crouchingActive"); reloadingWeapon = serializedObject.FindProperty ("reloadingWeapon"); weaponUpdateActive = serializedObject.FindProperty ("weaponUpdateActive"); usingDualWeapon = serializedObject.FindProperty ("usingDualWeapon"); disablingDualWeapon = serializedObject.FindProperty ("disablingDualWeapon"); usingRightHandDualWeapon = serializedObject.FindProperty ("usingRightHandDualWeapon"); weaponConfiguredAsDualWeapon = serializedObject.FindProperty ("weaponConfiguredAsDualWeapon"); linkedDualWeaponName = serializedObject.FindProperty ("linkedDualWeaponName"); showSettings = serializedObject.FindProperty ("showSettings"); showElementSettings = serializedObject.FindProperty ("showElementSettings"); showPrefabSettings = serializedObject.FindProperty ("showPrefabSettings"); weaponGameObject = serializedObject.FindProperty ("weaponGameObject"); extraRotation = serializedObject.FindProperty ("extraRotation"); aimFovValue = serializedObject.FindProperty ("aimFovValue"); aimFovSpeed = serializedObject.FindProperty ("aimFovSpeed"); hideWeaponIfKeptInThirdPerson = serializedObject.FindProperty ("hideWeaponIfKeptInThirdPerson"); canBeDropped = serializedObject.FindProperty ("canBeDropped"); canUnlockCursor = serializedObject.FindProperty ("canUnlockCursor"); canUnlockCursorOnThirdPerson = serializedObject.FindProperty ("canUnlockCursorOnThirdPerson"); disableHUDWhenCursorUnlocked = serializedObject.FindProperty ("disableHUDWhenCursorUnlocked"); weaponSystemManager = serializedObject.FindProperty ("weaponSystemManager"); weaponsManager = serializedObject.FindProperty ("weaponsManager"); weaponTransform = serializedObject.FindProperty ("weaponTransform"); layer = serializedObject.FindProperty ("layer"); weaponUsesAttachment = serializedObject.FindProperty ("weaponUsesAttachment"); mainWeaponAttachmentSystem = serializedObject.FindProperty ("mainWeaponAttachmentSystem"); showThirdPersonSettings = serializedObject.FindProperty ("showThirdPersonSettings"); thirdPersonWeaponInfo = serializedObject.FindProperty ("thirdPersonWeaponInfo"); thirdPersonUseSwayInfo = serializedObject.FindProperty ("thirdPersonWeaponInfo.useSwayInfo"); showSwaySettings = serializedObject.FindProperty ("showSwaySettings"); thirdPersonUseRunPosition = serializedObject.FindProperty ("thirdPersonWeaponInfo.useRunPosition"); thirdPersonUseRunSwayInfo = serializedObject.FindProperty ("thirdPersonWeaponInfo.useRunSwayInfo"); showWalkSwaySettings = serializedObject.FindProperty ("showWalkSwaySettings"); thirdPersonSwayInfo = serializedObject.FindProperty ("thirdPersonSwayInfo"); showRunSwaySettings = serializedObject.FindProperty ("showRunSwaySettings"); showFullBodyAwarernessSettings = serializedObject.FindProperty ("showFullBodyAwarernessSettings"); runThirdPersonSwayInfo = serializedObject.FindProperty ("runThirdPersonSwayInfo"); showFirstPersonSettings = serializedObject.FindProperty ("showFirstPersonSettings"); firstPersonWeaponInfo = serializedObject.FindProperty ("firstPersonWeaponInfo"); firstPersonUseSwayInfo = serializedObject.FindProperty ("firstPersonWeaponInfo.useSwayInfo"); firstPersonUseRunPosition = serializedObject.FindProperty ("firstPersonWeaponInfo.useRunPosition"); firstPersonUseRunSwayInfo = serializedObject.FindProperty ("firstPersonWeaponInfo.useRunSwayInfo"); firstPersonSwayInfo = serializedObject.FindProperty ("firstPersonSwayInfo"); runFirstPersonSwayInfo = serializedObject.FindProperty ("runFirstPersonSwayInfo"); showIdleSettings = serializedObject.FindProperty ("showIdleSettings"); useWeaponIdle = serializedObject.FindProperty ("useWeaponIdle"); timeToActiveWeaponIdle = serializedObject.FindProperty ("timeToActiveWeaponIdle"); idlePositionAmount = serializedObject.FindProperty ("idlePositionAmount"); idleRotationAmount = serializedObject.FindProperty ("idleRotationAmount"); idleSpeed = serializedObject.FindProperty ("idleSpeed"); playerMoving = serializedObject.FindProperty ("playerMoving"); idleActive = serializedObject.FindProperty ("idleActive"); showShotShakeSettings = serializedObject.FindProperty ("showShotShakeSettings"); showShotCameraNoiseSettings = serializedObject.FindProperty ("showShotCameraNoiseSettings"); sameValueBothViews = serializedObject.FindProperty ("sameValueBothViews"); thirdPersonshotShakeInfo = serializedObject.FindProperty ("thirdPersonshotShakeInfo"); useShotShakeInThirdPerson = serializedObject.FindProperty ("useShotShakeInThirdPerson"); useShotShakeInFirstPerson = serializedObject.FindProperty ("useShotShakeInFirstPerson"); firstPersonshotShakeInfo = serializedObject.FindProperty ("firstPersonshotShakeInfo"); useShotCameraNoise = serializedObject.FindProperty ("useShotCameraNoise"); useShotCameraNoiseDuration = serializedObject.FindProperty ("useShotCameraNoiseDuration"); shotCameraNoiseDuration = serializedObject.FindProperty ("shotCameraNoiseDuration"); showThirdPersonGizmo = serializedObject.FindProperty ("showThirdPersonGizmo"); showFirstPersonGizmo = serializedObject.FindProperty ("showFirstPersonGizmo"); showCollisionDetectionGizmo = serializedObject.FindProperty ("showCollisionDetectionGizmo"); showEditAttachmentGizmo = serializedObject.FindProperty ("showEditAttachmentGizmo"); showMainWeaponPositionsGizmo = serializedObject.FindProperty ("showMainWeaponPositionsGizmo"); showFBAGizmo = serializedObject.FindProperty ("showFBAGizmo"); showFBAWalkGizmo = serializedObject.FindProperty ("showFBAWalkGizmo"); showFBAAimGizmo = serializedObject.FindProperty ("showFBAAimGizmo"); showFBACrouchGizmo = serializedObject.FindProperty ("showFBACrouchGizmo"); showFBAJumpGizmo = serializedObject.FindProperty ("showFBAJumpGizmo"); showFBARunGizmo = serializedObject.FindProperty ("showFBARunGizmo"); showFBAObstacleGizmo = serializedObject.FindProperty ("showFBAObstacleGizmo"); gizmoLabelColor = serializedObject.FindProperty ("gizmoLabelColor"); showHandsWaypointGizmo = serializedObject.FindProperty ("showHandsWaypointGizmo"); showWeaponWaypointGizmo = serializedObject.FindProperty ("showWeaponWaypointGizmo"); showPositionGizmo = serializedObject.FindProperty ("showPositionGizmo"); thirdPersonUseHandle = serializedObject.FindProperty ("thirdPersonWeaponInfo.useHandle"); thirdPersonHandleRadius = serializedObject.FindProperty ("thirdPersonWeaponInfo.handleRadius"); thirdPersonHandleGizmoColor = serializedObject.FindProperty ("thirdPersonWeaponInfo.handleGizmoColor"); thirdPersonUsePositionHandle = serializedObject.FindProperty ("thirdPersonWeaponInfo.usePositionHandle"); firstPersonUseHandle = serializedObject.FindProperty ("firstPersonWeaponInfo.useHandle"); firstPersonHandleRadius = serializedObject.FindProperty ("firstPersonWeaponInfo.handleRadius"); firstPersonHandleGizmoColor = serializedObject.FindProperty ("firstPersonWeaponInfo.handleGizmoColor"); firstPersonUsePositionHandle = serializedObject.FindProperty ("firstPersonWeaponInfo.usePositionHandle"); relativePathWeaponsPickups = serializedObject.FindProperty ("relativePathWeaponsPickups"); emtpyWeaponPrefab = serializedObject.FindProperty ("emtpyWeaponPrefab"); weaponPrefabModel = serializedObject.FindProperty ("weaponPrefabModel"); inventoryWeaponPrefabObject = serializedObject.FindProperty ("inventoryWeaponPrefabObject"); relativePathWeaponsMesh = serializedObject.FindProperty ("relativePathWeaponsMesh"); relativePathWeaponsAmmoMesh = serializedObject.FindProperty ("relativePathWeaponsAmmoMesh"); inventoryWeaponCategoryName = serializedObject.FindProperty ("inventoryWeaponCategoryName"); weaponName = serializedObject.FindProperty ("weaponName"); inventoryAmmoCategoryName = serializedObject.FindProperty ("inventoryAmmoCategoryName"); ammoAmountPerPickup = serializedObject.FindProperty ("ammoAmountPerPickup"); weaponAmmoMesh = serializedObject.FindProperty ("weaponAmmoMesh"); weaponAmmoIconTexture = serializedObject.FindProperty ("weaponAmmoIconTexture"); useLowerRotationSpeedAimedThirdPerson = serializedObject.FindProperty ("useLowerRotationSpeedAimedThirdPerson"); verticalRotationSpeedAimedInThirdPerson = serializedObject.FindProperty ("verticalRotationSpeedAimedInThirdPerson"); horizontalRotationSpeedAimedInThirdPerson = serializedObject.FindProperty ("horizontalRotationSpeedAimedInThirdPerson"); canAimInFirstPerson = serializedObject.FindProperty ("canAimInFirstPerson"); useLowerRotationSpeedAimed = serializedObject.FindProperty ("useLowerRotationSpeedAimed"); verticalRotationSpeedAimedInFirstPerson = serializedObject.FindProperty ("verticalRotationSpeedAimedInFirstPerson"); horizontalRotationSpeedAimedInFirstPerson = serializedObject.FindProperty ("horizontalRotationSpeedAimedInFirstPerson"); firstPersonArms = serializedObject.FindProperty ("firstPersonArms"); disableOnlyFirstPersonArmsMesh = serializedObject.FindProperty ("disableOnlyFirstPersonArmsMesh"); firstPersonArmsMesh = serializedObject.FindProperty ("firstPersonArmsMesh"); extraFirstPersonArmsMeshes = serializedObject.FindProperty ("extraFirstPersonArmsMeshes"); thirdPersonDeactivateIKDrawPath = serializedObject.FindProperty ("thirdPersonWeaponInfo.deactivateIKDrawPath"); thirdPersonMeleeAttackShakeInfo = serializedObject.FindProperty ("thirdPersonMeleeAttackShakeInfo"); firstPersonMeleeAttackShakeInfo = serializedObject.FindProperty ("firstPersonMeleeAttackShakeInfo"); thirdPersonKeepPath = serializedObject.FindProperty ("thirdPersonWeaponInfo.keepPath"); thirdPersonHandsInfo = serializedObject.FindProperty ("thirdPersonWeaponInfo.handsInfo"); headLookWhenAiming = serializedObject.FindProperty ("headLookWhenAiming"); headLookSpeed = serializedObject.FindProperty ("headLookSpeed"); headLookTarget = serializedObject.FindProperty ("headLookTarget"); useWeaponAnimatorFirstPerson = serializedObject.FindProperty ("useWeaponAnimatorFirstPerson"); mainWeaponAnimatorSystem = serializedObject.FindProperty ("mainWeaponAnimatorSystem"); rightHandMountPoint = serializedObject.FindProperty ("rightHandMountPoint"); leftHandMountPoint = serializedObject.FindProperty ("leftHandMountPoint"); setNewAnimatorWeaponID = serializedObject.FindProperty ("setNewAnimatorWeaponID"); newAnimatorWeaponID = serializedObject.FindProperty ("newAnimatorWeaponID"); setNewAnimatorDualWeaponID = serializedObject.FindProperty ("setNewAnimatorDualWeaponID"); newAnimatorDualWeaponID = serializedObject.FindProperty ("newAnimatorDualWeaponID"); setUpperBodyBendingMultiplier = serializedObject.FindProperty ("setUpperBodyBendingMultiplier"); horizontalBendingMultiplier = serializedObject.FindProperty ("horizontalBendingMultiplier"); verticalBendingMultiplier = serializedObject.FindProperty ("verticalBendingMultiplier"); followFullRotationPointDirection = serializedObject.FindProperty ("followFullRotationPointDirection"); followFullRotationClampX = serializedObject.FindProperty ("followFullRotationClampX"); followFullRotationClampY = serializedObject.FindProperty ("followFullRotationClampY"); followFullRotationClampZ = serializedObject.FindProperty ("followFullRotationClampZ"); setNewAnimatorCrouchID = serializedObject.FindProperty ("setNewAnimatorCrouchID"); newAnimatorCrouchID = serializedObject.FindProperty ("newAnimatorCrouchID"); ignoreCrouchWhileWeaponActive = serializedObject.FindProperty ("ignoreCrouchWhileWeaponActive"); pivotPointRotationActive = serializedObject.FindProperty ("pivotPointRotationActive"); useNewMaxAngleDifference = serializedObject.FindProperty ("useNewMaxAngleDifference"); horizontalMaxAngleDifference = serializedObject.FindProperty ("horizontalMaxAngleDifference"); verticalMaxAngleDifference = serializedObject.FindProperty ("verticalMaxAngleDifference"); extraColliderScaleOnFireWeaponOnFBA = serializedObject.FindProperty ("extraColliderScaleOnFireWeaponOnFBA"); extraColliderCenterOnFireWeaponOnFBA = serializedObject.FindProperty ("extraColliderCenterOnFireWeaponOnFBA"); fullBodyAwarenessActive = serializedObject.FindProperty ("fullBodyAwarenessActive"); IKWeaponManager = (IKWeaponSystem)target; } void OnSceneGUI () { if (IKWeaponManager.showThirdPersonGizmo) { gizmoStyle.normal.textColor = IKWeaponManager.gizmoLabelColor; gizmoStyle.alignment = TextAnchor.MiddleCenter; gizmoStyle.fontStyle = FontStyle.Normal; gizmoStyle.fontSize = 10; if (IKWeaponManager.showPositionGizmo) { if (IKWeaponManager.showMainWeaponPositionsGizmo) { Handles.Label (IKWeaponManager.thirdPersonWeaponInfo.aimPosition.position, "Aim \n Position", gizmoStyle); Handles.Label (IKWeaponManager.thirdPersonWeaponInfo.walkPosition.position, "Walk \n Position", gizmoStyle); Handles.Label (IKWeaponManager.thirdPersonWeaponInfo.keepPosition.position, "Keep \n Position", gizmoStyle); Handles.Label (IKWeaponManager.thirdPersonWeaponInfo.aimRecoilPosition.position, "Aim \n Recoil \n Position", gizmoStyle); if (IKWeaponManager.thirdPersonWeaponInfo.useRunPosition && IKWeaponManager.thirdPersonWeaponInfo.runPosition != null) { Handles.Label (IKWeaponManager.thirdPersonWeaponInfo.runPosition.position, "Run \n Position", gizmoStyle); } } if (IKWeaponManager.showCollisionDetectionGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.checkSurfaceCollision) { Handles.Label (IKWeaponManager.thirdPersonWeaponInfo.surfaceCollisionPosition.position, "Surface \n Collision \n Position", gizmoStyle); Handles.Label (IKWeaponManager.thirdPersonWeaponInfo.surfaceCollisionRayPosition.position, "Surface \n Collision \n Ray \n Position", gizmoStyle); } } if (IKWeaponManager.showEditAttachmentGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.hasAttachments) { if (IKWeaponManager.thirdPersonWeaponInfo.editAttachmentPosition != null) { Handles.Label (IKWeaponManager.thirdPersonWeaponInfo.editAttachmentPosition.position, "Edit \n Attachment \n Position", gizmoStyle); } } } if (IKWeaponManager.showCollisionDetectionGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.checkSurfaceCollision) { gizmoStyle.normal.textColor = IKWeaponManager.gizmoLabelColor; gizmoStyle.alignment = TextAnchor.MiddleCenter; Handles.Label (IKWeaponManager.thirdPersonWeaponInfo.surfaceCollisionRayPosition.position + IKWeaponManager.thirdPersonWeaponInfo.surfaceCollisionRayPosition.forward * IKWeaponManager.thirdPersonWeaponInfo.collisionRayDistance, "Collision \n Ray \n Distance", gizmoStyle); } } } thirdPersonHandleRadiusValue = IKWeaponManager.thirdPersonWeaponInfo.handleRadius; if (IKWeaponManager.showHandsWaypointGizmo) { for (int i = 0; i < IKWeaponManager.thirdPersonWeaponInfo.handsInfo.Count; i++) { Handles.Label (IKWeaponManager.thirdPersonWeaponInfo.handsInfo [i].position.position, IKWeaponManager.thirdPersonWeaponInfo.handsInfo [i].Name, gizmoStyle); if (IKWeaponManager.thirdPersonWeaponInfo.useHandle) { for (int j = 0; j < IKWeaponManager.thirdPersonWeaponInfo.handsInfo [i].wayPoints.Count; j++) { Handles.color = IKWeaponManager.thirdPersonWeaponInfo.handleGizmoColor; showFreeMoveHandle (IKWeaponManager.thirdPersonWeaponInfo.handsInfo [i].wayPoints [j], "move Third IKWeapon Waypoint Info Handle" + i, thirdPersonHandleRadiusValue); } } if (IKWeaponManager.thirdPersonWeaponInfo.usePositionHandle) { for (int j = 0; j < IKWeaponManager.thirdPersonWeaponInfo.handsInfo [i].wayPoints.Count; j++) { showPositionHandle (IKWeaponManager.thirdPersonWeaponInfo.handsInfo [i].wayPoints [j], "move handle waypoint" + i); } } } } if (IKWeaponManager.showWeaponWaypointGizmo) { for (int i = 0; i < IKWeaponManager.thirdPersonWeaponInfo.keepPath.Count; i++) { Handles.Label (IKWeaponManager.thirdPersonWeaponInfo.keepPath [i].position, (1 + i).ToString (), gizmoStyle); if (IKWeaponManager.thirdPersonWeaponInfo.useHandle) { for (int j = 0; j < IKWeaponManager.thirdPersonWeaponInfo.keepPath.Count; j++) { Handles.color = IKWeaponManager.thirdPersonWeaponInfo.handleGizmoColor; showFreeMoveHandle (IKWeaponManager.thirdPersonWeaponInfo.keepPath [i], "move Third IKWeapon Weapon Waypoint Info Handle" + i, thirdPersonHandleRadiusValue); } } if (IKWeaponManager.thirdPersonWeaponInfo.usePositionHandle) { showPositionHandle (IKWeaponManager.thirdPersonWeaponInfo.keepPath [i], "move weapon handle waypoint" + i); } } } if (IKWeaponManager.showPositionGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.useHandle) { if (IKWeaponManager.showMainWeaponPositionsGizmo) { showFreeMoveHandle (IKWeaponManager.thirdPersonWeaponInfo.aimPosition, "move Third Aim Position Info Handle", thirdPersonHandleRadiusValue); showFreeMoveHandle (IKWeaponManager.thirdPersonWeaponInfo.walkPosition, "move Third Walk Position Info Handle", thirdPersonHandleRadiusValue); showFreeMoveHandle (IKWeaponManager.thirdPersonWeaponInfo.keepPosition, "move Third Keep Position Info Handle", thirdPersonHandleRadiusValue); showFreeMoveHandle (IKWeaponManager.thirdPersonWeaponInfo.aimRecoilPosition, "move Third Aim Recoil Position Info Handle", thirdPersonHandleRadiusValue); if (IKWeaponManager.thirdPersonWeaponInfo.useRunPosition && IKWeaponManager.thirdPersonWeaponInfo.runPosition) { showFreeMoveHandle (IKWeaponManager.thirdPersonWeaponInfo.runPosition, "move Third Run Position Info Handle", thirdPersonHandleRadiusValue); } } if (IKWeaponManager.showCollisionDetectionGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.checkSurfaceCollision) { showFreeMoveHandle (IKWeaponManager.thirdPersonWeaponInfo.surfaceCollisionPosition, "move Third Aim Surface Collision Position Info Handle", thirdPersonHandleRadiusValue); showFreeMoveHandle (IKWeaponManager.thirdPersonWeaponInfo.surfaceCollisionRayPosition, "move Third Aim Surface Collision Ray Position Info Handle", thirdPersonHandleRadiusValue); } } if (IKWeaponManager.showEditAttachmentGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.hasAttachments) { if (IKWeaponManager.thirdPersonWeaponInfo.editAttachmentPosition != null) { showFreeMoveHandle (IKWeaponManager.thirdPersonWeaponInfo.editAttachmentPosition, "move Third Edit Attachment Position Info Handle", thirdPersonHandleRadiusValue); } } } } if (IKWeaponManager.thirdPersonWeaponInfo.usePositionHandle) { if (IKWeaponManager.showMainWeaponPositionsGizmo) { showPositionHandle (IKWeaponManager.thirdPersonWeaponInfo.aimPosition, "move Third Aim Position Info Handle"); showPositionHandle (IKWeaponManager.thirdPersonWeaponInfo.walkPosition, "move Third Walk Position Info Handle"); showPositionHandle (IKWeaponManager.thirdPersonWeaponInfo.keepPosition, "move Third Keep Position Info Handle"); showPositionHandle (IKWeaponManager.thirdPersonWeaponInfo.aimRecoilPosition, "move Third Aim Recoil Position Info Handle"); if (IKWeaponManager.thirdPersonWeaponInfo.useRunPosition && IKWeaponManager.thirdPersonWeaponInfo.runPosition != null) { showPositionHandle (IKWeaponManager.thirdPersonWeaponInfo.runPosition, "move Third Run Position Info Handle"); } } if (IKWeaponManager.showCollisionDetectionGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.checkSurfaceCollision) { showPositionHandle (IKWeaponManager.thirdPersonWeaponInfo.surfaceCollisionPosition, "move Third Aim Surface Collision Position Info Handle"); showPositionHandle (IKWeaponManager.thirdPersonWeaponInfo.surfaceCollisionRayPosition, "move Third Aim Surface Collision Ray Position Info Handle"); } } if (IKWeaponManager.showEditAttachmentGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.hasAttachments) { if (IKWeaponManager.thirdPersonWeaponInfo.editAttachmentPosition != null) { showPositionHandle (IKWeaponManager.thirdPersonWeaponInfo.editAttachmentPosition, "move Third Edit Attachment Position Info Handle"); } } } } } } if (IKWeaponManager.showFirstPersonGizmo) { gizmoStyle.normal.textColor = IKWeaponManager.gizmoLabelColor; gizmoStyle.alignment = TextAnchor.MiddleCenter; if (IKWeaponManager.showPositionGizmo) { if (IKWeaponManager.showMainWeaponPositionsGizmo) { Handles.Label (IKWeaponManager.firstPersonWeaponInfo.aimPosition.position, "Aim \n Position", gizmoStyle); Handles.Label (IKWeaponManager.firstPersonWeaponInfo.walkPosition.position, "Walk \n Position", gizmoStyle); Handles.Label (IKWeaponManager.firstPersonWeaponInfo.keepPosition.position, "Keep \n Position", gizmoStyle); Handles.Label (IKWeaponManager.firstPersonWeaponInfo.aimRecoilPosition.position, "Aim \n Recoil \n Position", gizmoStyle); Handles.Label (IKWeaponManager.firstPersonWeaponInfo.walkRecoilPosition.position, "Walk \n Recoil \n Position", gizmoStyle); if (IKWeaponManager.firstPersonWeaponInfo.useRunPosition) { Handles.Label (IKWeaponManager.firstPersonWeaponInfo.runPosition.position, "Run \n Position", gizmoStyle); } } if (IKWeaponManager.showCollisionDetectionGizmo) { if (IKWeaponManager.firstPersonWeaponInfo.checkSurfaceCollision) { Handles.Label (IKWeaponManager.firstPersonWeaponInfo.surfaceCollisionPosition.position, "Surface \n Collision \n Position", gizmoStyle); Handles.Label (IKWeaponManager.firstPersonWeaponInfo.surfaceCollisionRayPosition.position, "Surface \n Collision \n Ray \n Position", gizmoStyle); } } if (IKWeaponManager.showEditAttachmentGizmo) { if (IKWeaponManager.firstPersonWeaponInfo.hasAttachments) { if (IKWeaponManager.firstPersonWeaponInfo.editAttachmentPosition != null) { Handles.Label (IKWeaponManager.firstPersonWeaponInfo.editAttachmentPosition.position, "Edit \n Attachment \n Position", gizmoStyle); } if (IKWeaponManager.firstPersonWeaponInfo.useSightPosition) { if (IKWeaponManager.firstPersonWeaponInfo.sightPosition != null) { Handles.Label (IKWeaponManager.firstPersonWeaponInfo.sightPosition.position, "Sight \n Position", gizmoStyle); } if (IKWeaponManager.firstPersonWeaponInfo.sightRecoilPosition != null) { Handles.Label (IKWeaponManager.firstPersonWeaponInfo.sightRecoilPosition.position, "Sight \n Recoil \n Position", gizmoStyle); } } } } if (IKWeaponManager.showCollisionDetectionGizmo) { if (IKWeaponManager.firstPersonWeaponInfo.checkSurfaceCollision) { gizmoStyle.normal.textColor = IKWeaponManager.gizmoLabelColor; gizmoStyle.alignment = TextAnchor.MiddleCenter; Handles.Label (IKWeaponManager.firstPersonWeaponInfo.surfaceCollisionRayPosition.position + IKWeaponManager.firstPersonWeaponInfo.surfaceCollisionRayPosition.forward * IKWeaponManager.firstPersonWeaponInfo.collisionRayDistance, "Collision \n Ray \n Distance", gizmoStyle); } } } firstPersonHandleRadiusValue = IKWeaponManager.firstPersonWeaponInfo.handleRadius; if (IKWeaponManager.showPositionGizmo) { if (IKWeaponManager.firstPersonWeaponInfo.useHandle) { Handles.color = IKWeaponManager.firstPersonWeaponInfo.handleGizmoColor; if (IKWeaponManager.showMainWeaponPositionsGizmo) { showFreeMoveHandle (IKWeaponManager.firstPersonWeaponInfo.aimPosition, "move First Aim Position Info Handle", firstPersonHandleRadiusValue); showFreeMoveHandle (IKWeaponManager.firstPersonWeaponInfo.walkPosition, "move First Walk Position Info Handle", firstPersonHandleRadiusValue); showFreeMoveHandle (IKWeaponManager.firstPersonWeaponInfo.keepPosition, "move First Keep Position Info Handle", firstPersonHandleRadiusValue); showFreeMoveHandle (IKWeaponManager.firstPersonWeaponInfo.aimRecoilPosition, "move First Aim Recoil Position Info Handle", firstPersonHandleRadiusValue); showFreeMoveHandle (IKWeaponManager.firstPersonWeaponInfo.walkRecoilPosition, "move First Walk Recoil Position Info Handle", firstPersonHandleRadiusValue); if (IKWeaponManager.firstPersonWeaponInfo.useRunPosition && IKWeaponManager.firstPersonWeaponInfo.runPosition != null) { showFreeMoveHandle (IKWeaponManager.firstPersonWeaponInfo.runPosition, "move First Run Position Info Handle", firstPersonHandleRadiusValue); } } if (IKWeaponManager.showCollisionDetectionGizmo) { if (IKWeaponManager.firstPersonWeaponInfo.checkSurfaceCollision) { showFreeMoveHandle (IKWeaponManager.firstPersonWeaponInfo.surfaceCollisionPosition, "move First Aim Surface Collision Position Info Handle", firstPersonHandleRadiusValue); showFreeMoveHandle (IKWeaponManager.firstPersonWeaponInfo.surfaceCollisionRayPosition, "move First Aim Surface Collision Ray Position Info Handle", firstPersonHandleRadiusValue); } } if (IKWeaponManager.showEditAttachmentGizmo) { if (IKWeaponManager.firstPersonWeaponInfo.hasAttachments) { if (IKWeaponManager.firstPersonWeaponInfo.editAttachmentPosition != null) { showFreeMoveHandle (IKWeaponManager.firstPersonWeaponInfo.editAttachmentPosition, "move First Edit Attachment Position Info Handle", firstPersonHandleRadiusValue); } if (IKWeaponManager.firstPersonWeaponInfo.useSightPosition) { if (IKWeaponManager.firstPersonWeaponInfo.sightPosition != null) { showFreeMoveHandle (IKWeaponManager.firstPersonWeaponInfo.sightPosition, "move First Sight Position Info Handle", firstPersonHandleRadiusValue); } if (IKWeaponManager.firstPersonWeaponInfo.sightRecoilPosition != null) { showFreeMoveHandle (IKWeaponManager.firstPersonWeaponInfo.sightRecoilPosition, "move First Sight Recoil Position Info Handle", firstPersonHandleRadiusValue); } } } } } if (IKWeaponManager.firstPersonWeaponInfo.usePositionHandle) { Handles.color = IKWeaponManager.firstPersonWeaponInfo.handleGizmoColor; if (IKWeaponManager.showMainWeaponPositionsGizmo) { showPositionHandle (IKWeaponManager.firstPersonWeaponInfo.aimPosition, "move First Aim Position Info Handle"); showPositionHandle (IKWeaponManager.firstPersonWeaponInfo.walkPosition, "move First Walk Position Info Handle"); showPositionHandle (IKWeaponManager.firstPersonWeaponInfo.keepPosition, "move First Keep Position Info Handle"); showPositionHandle (IKWeaponManager.firstPersonWeaponInfo.aimRecoilPosition, "move First Aim Recoil Position Info Handle"); showPositionHandle (IKWeaponManager.firstPersonWeaponInfo.walkRecoilPosition, "move First Walk Recoil Position Info Handle"); if (IKWeaponManager.firstPersonWeaponInfo.useRunPosition && IKWeaponManager.firstPersonWeaponInfo.runPosition != null) { showPositionHandle (IKWeaponManager.firstPersonWeaponInfo.runPosition, "move First Run Position Info Handle"); } } if (IKWeaponManager.showCollisionDetectionGizmo) { if (IKWeaponManager.firstPersonWeaponInfo.checkSurfaceCollision) { showPositionHandle (IKWeaponManager.firstPersonWeaponInfo.surfaceCollisionPosition, "move First Aim Surface Collision Position Info Handle"); showPositionHandle (IKWeaponManager.firstPersonWeaponInfo.surfaceCollisionRayPosition, "move First Aim Surface Collision Ray Position Info Handle"); } } if (IKWeaponManager.showEditAttachmentGizmo) { if (IKWeaponManager.firstPersonWeaponInfo.hasAttachments) { if (IKWeaponManager.firstPersonWeaponInfo.editAttachmentPosition != null) { showPositionHandle (IKWeaponManager.firstPersonWeaponInfo.editAttachmentPosition, "move First Edit Attachment Position Info Handle"); } if (IKWeaponManager.firstPersonWeaponInfo.useSightPosition) { if (IKWeaponManager.firstPersonWeaponInfo.sightPosition != null) { showPositionHandle (IKWeaponManager.firstPersonWeaponInfo.sightPosition, "move First Sight Position Info Handle"); } if (IKWeaponManager.firstPersonWeaponInfo.sightRecoilPosition != null) { showPositionHandle (IKWeaponManager.firstPersonWeaponInfo.sightRecoilPosition, "move First Sight Recoil Position Info Handle"); } } } } } } } if (IKWeaponManager.showFBAGizmo) { gizmoStyle.normal.textColor = IKWeaponManager.gizmoLabelColor; gizmoStyle.alignment = TextAnchor.MiddleCenter; Vector3 targetPosition = Vector3.zero; Quaternion targetRotation = Quaternion.identity; if (IKWeaponManager.showFBAWalkGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.overrideFBAValuesForOffset) { targetPosition = IKWeaponManager.transform.position + IKWeaponManager.thirdPersonWeaponInfo.FBAWalkPositionOffset; targetRotation = IKWeaponManager.transform.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAWalkRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAWalkPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAWalkRotationOffset, IKWeaponManager.transform.position, IKWeaponManager.transform.rotation, "Move FBA Walk Position Handle"); } else { targetPosition = IKWeaponManager.thirdPersonWeaponInfo.walkPosition.position + IKWeaponManager.thirdPersonWeaponInfo.FBAWalkPositionOffset; targetRotation = IKWeaponManager.thirdPersonWeaponInfo.walkPosition.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAWalkRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAWalkPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAWalkRotationOffset, IKWeaponManager.thirdPersonWeaponInfo.walkPosition.position, IKWeaponManager.thirdPersonWeaponInfo.walkPosition.rotation, "Move FBA Walk Position Handle"); } if (IKWeaponManager.thirdPersonWeaponInfo.overrideFBAValuesForOffset) { targetPosition = IKWeaponManager.transform.position + IKWeaponManager.thirdPersonWeaponInfo.FBAWalkRecoilPositionOffset; targetRotation = IKWeaponManager.transform.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAWalkRecoilRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAWalkRecoilPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAWalkRecoilRotationOffset, IKWeaponManager.transform.position, IKWeaponManager.transform.rotation, "Move FBA Walk Recoil Position Handle"); } else { targetPosition = IKWeaponManager.thirdPersonWeaponInfo.walkPosition.position + IKWeaponManager.thirdPersonWeaponInfo.FBAWalkRecoilPositionOffset; targetRotation = IKWeaponManager.thirdPersonWeaponInfo.walkPosition.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAWalkRecoilRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAWalkRecoilPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAWalkRecoilRotationOffset, IKWeaponManager.thirdPersonWeaponInfo.walkPosition.position, IKWeaponManager.thirdPersonWeaponInfo.walkPosition.rotation, "Move FBA Walk Recoil Position Handle"); } } if (IKWeaponManager.showFBAAimGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.overrideFBAValuesForOffset) { targetPosition = IKWeaponManager.transform.position + IKWeaponManager.thirdPersonWeaponInfo.FBAAimPositionOffset; targetRotation = IKWeaponManager.transform.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAAimRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAAimPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAAimRotationOffset, IKWeaponManager.transform.position, IKWeaponManager.transform.rotation, "Move FBA Aim Position Handle"); } else { targetPosition = IKWeaponManager.thirdPersonWeaponInfo.aimPosition.position + IKWeaponManager.thirdPersonWeaponInfo.FBAAimPositionOffset; targetRotation = IKWeaponManager.thirdPersonWeaponInfo.aimPosition.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAAimRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAAimPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAAimRotationOffset, IKWeaponManager.thirdPersonWeaponInfo.aimPosition.position, IKWeaponManager.thirdPersonWeaponInfo.aimPosition.rotation, "Move FBA Aim Position Handle"); } if (IKWeaponManager.thirdPersonWeaponInfo.overrideFBAValuesForOffset) { targetPosition = IKWeaponManager.transform.position + IKWeaponManager.thirdPersonWeaponInfo.FBAAimRecoilPositionOffset; targetRotation = IKWeaponManager.transform.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAAimRecoilRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAAimRecoilPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAAimRecoilRotationOffset, IKWeaponManager.transform.position, IKWeaponManager.transform.rotation, "Move FBA Aim Recoil Position Handle"); } else { targetPosition = IKWeaponManager.thirdPersonWeaponInfo.aimRecoilPosition.position + IKWeaponManager.thirdPersonWeaponInfo.FBAAimRecoilPositionOffset; targetRotation = IKWeaponManager.thirdPersonWeaponInfo.aimRecoilPosition.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAAimRecoilRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAAimRecoilPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAAimRecoilRotationOffset, IKWeaponManager.thirdPersonWeaponInfo.aimRecoilPosition.position, IKWeaponManager.thirdPersonWeaponInfo.aimRecoilPosition.rotation, "Move FBA Aim Recoil Position Handle"); } } if (IKWeaponManager.showFBACrouchGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.overrideFBAValuesForOffset) { targetPosition = IKWeaponManager.transform.position + IKWeaponManager.thirdPersonWeaponInfo.FBACrouchPositionOffset; targetRotation = IKWeaponManager.transform.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBACrouchRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBACrouchPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBACrouchRotationOffset, IKWeaponManager.transform.position, IKWeaponManager.transform.rotation, "Move FBA Crouch Position Handle"); } else { if (IKWeaponManager.thirdPersonWeaponInfo.crouchPosition != null) { targetPosition = IKWeaponManager.thirdPersonWeaponInfo.crouchPosition.position + IKWeaponManager.thirdPersonWeaponInfo.FBACrouchPositionOffset; targetRotation = IKWeaponManager.thirdPersonWeaponInfo.crouchPosition.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBACrouchRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBACrouchPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBACrouchRotationOffset, IKWeaponManager.thirdPersonWeaponInfo.crouchPosition.position, IKWeaponManager.thirdPersonWeaponInfo.crouchPosition.rotation, "Move FBA Crouch Position Handle"); } } if (IKWeaponManager.thirdPersonWeaponInfo.overrideFBAValuesForOffset) { targetPosition = IKWeaponManager.transform.position + IKWeaponManager.thirdPersonWeaponInfo.FBACrouchRecoilPositionOffset; targetRotation = IKWeaponManager.transform.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBACrouchRecoilRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBACrouchRecoilPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBACrouchRecoilRotationOffset, IKWeaponManager.transform.position, IKWeaponManager.transform.rotation, "Move FBA Crouch Recoil Position Handle"); } else { if (IKWeaponManager.thirdPersonWeaponInfo.crouchRecoilPosition != null) { targetPosition = IKWeaponManager.thirdPersonWeaponInfo.crouchRecoilPosition.position + IKWeaponManager.thirdPersonWeaponInfo.FBACrouchRecoilPositionOffset; targetRotation = IKWeaponManager.thirdPersonWeaponInfo.crouchRecoilPosition.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBACrouchRecoilRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBACrouchRecoilPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBACrouchRecoilRotationOffset, IKWeaponManager.thirdPersonWeaponInfo.crouchRecoilPosition.position, IKWeaponManager.thirdPersonWeaponInfo.crouchRecoilPosition.rotation, "Move FBA Crouch Recoil Position Handle"); } } } if (IKWeaponManager.showFBAJumpGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.overrideFBAValuesForOffset) { targetPosition = IKWeaponManager.transform.position + IKWeaponManager.thirdPersonWeaponInfo.FBAJumpStartPositionOffset; targetRotation = IKWeaponManager.transform.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAJumpStartRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAJumpStartPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAJumpStartRotationOffset, IKWeaponManager.transform.position, IKWeaponManager.transform.rotation, "Move FBA Jump Start Position Handle"); } else { if (IKWeaponManager.thirdPersonWeaponInfo.jumpStartPosition != null) { targetPosition = IKWeaponManager.thirdPersonWeaponInfo.jumpStartPosition.position + IKWeaponManager.thirdPersonWeaponInfo.FBAJumpStartPositionOffset; targetRotation = IKWeaponManager.thirdPersonWeaponInfo.jumpStartPosition.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAJumpStartRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAJumpStartPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAJumpStartRotationOffset, IKWeaponManager.thirdPersonWeaponInfo.jumpStartPosition.position, IKWeaponManager.thirdPersonWeaponInfo.jumpStartPosition.rotation, "Move FBA Jump Start Position Handle"); } } if (IKWeaponManager.thirdPersonWeaponInfo.overrideFBAValuesForOffset) { targetPosition = IKWeaponManager.transform.position + IKWeaponManager.thirdPersonWeaponInfo.FBAJumpEndPositionOffset; targetRotation = IKWeaponManager.transform.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAJumpEndRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAJumpEndPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAJumpEndRotationOffset, IKWeaponManager.transform.position, IKWeaponManager.transform.rotation, "Move FBA Jump End Position Handle"); } else { if (IKWeaponManager.thirdPersonWeaponInfo.jumpEndPosition != null) { targetPosition = IKWeaponManager.thirdPersonWeaponInfo.jumpEndPosition.position + IKWeaponManager.thirdPersonWeaponInfo.FBAJumpEndPositionOffset; targetRotation = IKWeaponManager.thirdPersonWeaponInfo.jumpEndPosition.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAJumpEndRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAJumpEndPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAJumpEndRotationOffset, IKWeaponManager.thirdPersonWeaponInfo.jumpEndPosition.position, IKWeaponManager.thirdPersonWeaponInfo.jumpEndPosition.rotation, "Move FBA Jump End Position Handle"); } } } if (IKWeaponManager.showFBARunGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.overrideFBAValuesForOffset) { targetPosition = IKWeaponManager.transform.position + IKWeaponManager.thirdPersonWeaponInfo.FBARunPositionOffset; targetRotation = IKWeaponManager.transform.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBARunRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBARunPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBARunRotationOffset, IKWeaponManager.transform.position, IKWeaponManager.transform.rotation, "Move FBA Run Start Position Handle"); } else { if (IKWeaponManager.thirdPersonWeaponInfo.FBARunPositionOffset != null) { targetPosition = IKWeaponManager.thirdPersonWeaponInfo.runPosition.position + IKWeaponManager.thirdPersonWeaponInfo.FBARunPositionOffset; targetRotation = IKWeaponManager.thirdPersonWeaponInfo.runPosition.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBARunRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBARunPositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBARunRotationOffset, IKWeaponManager.thirdPersonWeaponInfo.runPosition.position, IKWeaponManager.thirdPersonWeaponInfo.runPosition.rotation, "Move FBA Run Start Position Handle"); } } } if (IKWeaponManager.showFBAObstacleGizmo) { if (IKWeaponManager.thirdPersonWeaponInfo.overrideFBAValuesForOffset) { targetPosition = IKWeaponManager.transform.position + IKWeaponManager.thirdPersonWeaponInfo.FBAObstaclePositionOffset; targetRotation = IKWeaponManager.transform.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAObstacleRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAObstaclePositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAObstacleRotationOffset, IKWeaponManager.transform.position, IKWeaponManager.transform.rotation, "Move FBA Run Start Position Handle"); } else { if (IKWeaponManager.thirdPersonWeaponInfo.FBAObstaclePositionOffset != null) { targetPosition = IKWeaponManager.thirdPersonWeaponInfo.runPosition.position + IKWeaponManager.thirdPersonWeaponInfo.FBAObstaclePositionOffset; targetRotation = IKWeaponManager.thirdPersonWeaponInfo.runPosition.rotation * Quaternion.Euler (IKWeaponManager.thirdPersonWeaponInfo.FBAObstacleRotationOffset); showPositionHandleDirectly (targetPosition, targetRotation, ref IKWeaponManager.thirdPersonWeaponInfo.FBAObstaclePositionOffset, ref IKWeaponManager.thirdPersonWeaponInfo.FBAObstacleRotationOffset, IKWeaponManager.thirdPersonWeaponInfo.runPosition.position, IKWeaponManager.thirdPersonWeaponInfo.runPosition.rotation, "Move FBA Run Start Position Handle"); } } } } } public void showPositionHandle (Transform currentTransform, string handleName) { currentRotationHandle = Tools.pivotRotation == PivotRotation.Local ? currentTransform.rotation : Quaternion.identity; EditorGUI.BeginChangeCheck (); curretPositionHandle = currentTransform.position; if (Tools.current == Tool.Move) { curretPositionHandle = Handles.DoPositionHandle (curretPositionHandle, currentRotationHandle); } currentRotationHandle = currentTransform.rotation; if (Tools.current == Tool.Rotate) { currentRotationHandle = Handles.DoRotationHandle (currentRotationHandle, curretPositionHandle); } if (EditorGUI.EndChangeCheck ()) { Undo.RecordObject (currentTransform, handleName); currentTransform.position = curretPositionHandle; currentTransform.rotation = currentRotationHandle; } } public void showPositionHandleDirectly (Vector3 transformPosition, Quaternion transformRotation, ref Vector3 FBAWalkPositionOffset, ref Vector3 FBAWalkRotationOffset, Vector3 originPosition, Quaternion originRotation, string handleName) { currentRotationHandle = Tools.pivotRotation == PivotRotation.Local ? transformRotation : Quaternion.identity; EditorGUI.BeginChangeCheck (); curretPositionHandle = transformPosition; if (Tools.current == Tool.Move) { curretPositionHandle = Handles.DoPositionHandle (curretPositionHandle, currentRotationHandle); } currentRotationHandle = transformRotation; if (Tools.current == Tool.Rotate) { currentRotationHandle = Handles.DoRotationHandle (currentRotationHandle, curretPositionHandle); } if (EditorGUI.EndChangeCheck ()) { Undo.RecordObject (IKWeaponManager.transform, handleName); FBAWalkPositionOffset = curretPositionHandle - originPosition; FBAWalkRotationOffset = (Quaternion.Inverse (originRotation) * currentRotationHandle).eulerAngles; } } public void showFreeMoveHandle (Transform currentTransform, string handleName, float handleRadius) { EditorGUI.BeginChangeCheck (); currentFreeHandlePosition = currentTransform.position; var fmh_1094_84_638979118404681935 = Quaternion.identity; newFreeHandlePosition = Handles.FreeMoveHandle (currentFreeHandlePosition, handleRadius, snapValue, Handles.CircleHandleCap); if (EditorGUI.EndChangeCheck ()) { Undo.RecordObject (currentTransform, handleName); currentTransform.position = newFreeHandlePosition; } } public override void OnInspectorGUI () { EditorGUILayout.Space (); buttonStyle = new GUIStyle (GUI.skin.button); buttonStyle.fontStyle = FontStyle.Bold; buttonStyle.fontSize = 12; GUILayout.BeginVertical ("Weapon State", "window", GUILayout.Height (30)); GUILayout.Label ("Weapon Enabled\t\t" + weaponEnabled.boolValue); GUILayout.Label ("Is Current Weapon\t\t" + currentWeapon.boolValue); GUILayout.Label ("Carrying Weapon\t\t" + carrying.boolValue); GUILayout.Label ("Aiming Weapon\t\t\t" + aiming.boolValue); GUILayout.Label ("Moving Weapon\t\t\t" + moving.boolValue); GUILayout.Label ("IK Paused\t\t\t" + IKPausedOnHandsActive.boolValue); GUILayout.Label ("Surface Detected\t\t" + surfaceDetected.boolValue); GUILayout.Label ("In Run Position\t\t\t" + weaponInRunPosition.boolValue); GUILayout.Label ("Jump In Process\t\t\t" + jumpingOnProcess.boolValue); GUILayout.Label ("Player Jump Start\t\t" + playerOnJumpStart.boolValue); GUILayout.Label ("Player Jump End\t\t" + playerOnJumpEnd.boolValue); GUILayout.Label ("Crouch Active\t\t\t" + crouchingActive.boolValue); GUILayout.Label ("Reloading\t\t\t" + reloadingWeapon.boolValue); GUILayout.Label ("Action Active\t\t\t" + actionActive.boolValue); GUILayout.Label ("Update Active\t\t\t" + weaponUpdateActive.boolValue); GUILayout.Label ("FBA Active\t\t\t" + fullBodyAwarenessActive.boolValue); EditorGUILayout.Space (); GUILayout.BeginVertical ("Dual Weapon State", "window"); GUILayout.Label ("Using Dual Weapons\t\t" + usingDualWeapon.boolValue); GUILayout.Label ("Disabling Dual State\t\t" + disablingDualWeapon.boolValue); GUILayout.Label ("Right Dual Weapon\t\t" + usingRightHandDualWeapon.boolValue); GUILayout.Label ("Configured as Dual\t\t" + weaponConfiguredAsDualWeapon.boolValue); GUILayout.Label ("Linked Weapon\t\t" + linkedDualWeaponName.stringValue); GUILayout.EndVertical (); GUILayout.EndVertical (); EditorGUILayout.Space (); buttonColor = GUI.backgroundColor; EditorGUILayout.BeginVertical (); if (showSettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Main Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Main Settings"; } if (GUILayout.Button (inputListOpenedText)) { showSettings.boolValue = !showSettings.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 (showPrefabSettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Prefab Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Prefab Settings"; } if (GUILayout.Button (inputListOpenedText)) { showPrefabSettings.boolValue = !showPrefabSettings.boolValue; } if (GUILayout.Button ("Hide All Settings")) { showSettings.boolValue = false; showElementSettings.boolValue = false; showPrefabSettings.boolValue = false; showThirdPersonSettings.boolValue = false; showSwaySettings.boolValue = false; showWalkSwaySettings.boolValue = false; showRunSwaySettings.boolValue = false; showFirstPersonSettings.boolValue = false; showSwaySettings.boolValue = false; showWalkSwaySettings.boolValue = false; showRunSwaySettings.boolValue = false; showIdleSettings.boolValue = false; showShotShakeSettings.boolValue = false; showShotCameraNoiseSettings.boolValue = false; showSingleWeaponSettings = false; showDualWeaponSettings = false; showElbowInfo = false; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("MAIN SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Main Settings", "window"); EditorGUILayout.PropertyField (weaponGameObject); EditorGUILayout.PropertyField (extraRotation); EditorGUILayout.PropertyField (aimFovValue); EditorGUILayout.PropertyField (aimFovSpeed); EditorGUILayout.PropertyField (weaponEnabled); EditorGUILayout.PropertyField (hideWeaponIfKeptInThirdPerson); EditorGUILayout.PropertyField (canBeDropped); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("New Animator Weapon ID Settings", "window"); EditorGUILayout.PropertyField (setNewAnimatorWeaponID); if (setNewAnimatorWeaponID.boolValue) { EditorGUILayout.PropertyField (newAnimatorWeaponID); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (setNewAnimatorDualWeaponID); if (setNewAnimatorDualWeaponID.boolValue) { EditorGUILayout.PropertyField (newAnimatorDualWeaponID); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (setUpperBodyBendingMultiplier); if (setUpperBodyBendingMultiplier.boolValue) { EditorGUILayout.PropertyField (horizontalBendingMultiplier); EditorGUILayout.PropertyField (verticalBendingMultiplier); EditorGUILayout.Space (); EditorGUILayout.PropertyField (followFullRotationPointDirection); if (followFullRotationPointDirection.boolValue) { EditorGUILayout.PropertyField (followFullRotationClampX); EditorGUILayout.PropertyField (followFullRotationClampY); EditorGUILayout.PropertyField (followFullRotationClampZ); } } EditorGUILayout.Space (); EditorGUILayout.PropertyField (setNewAnimatorCrouchID); if (setNewAnimatorCrouchID.boolValue) { EditorGUILayout.PropertyField (newAnimatorCrouchID); } EditorGUILayout.PropertyField (ignoreCrouchWhileWeaponActive); EditorGUILayout.Space (); EditorGUILayout.PropertyField (pivotPointRotationActive); EditorGUILayout.Space (); EditorGUILayout.PropertyField (useNewMaxAngleDifference); if (useNewMaxAngleDifference.boolValue) { EditorGUILayout.PropertyField (horizontalMaxAngleDifference); EditorGUILayout.PropertyField (verticalMaxAngleDifference); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Unlock Cursor Settings", "window"); EditorGUILayout.PropertyField (canUnlockCursor, new GUIContent ("Can Unlock Cursor On First Person")); EditorGUILayout.PropertyField (canUnlockCursorOnThirdPerson); EditorGUILayout.PropertyField (disableHUDWhenCursorUnlocked); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon Components", "window"); EditorGUILayout.PropertyField (weaponSystemManager); EditorGUILayout.PropertyField (weaponsManager); EditorGUILayout.PropertyField (weaponTransform); EditorGUILayout.PropertyField (rightHandMountPoint); EditorGUILayout.PropertyField (leftHandMountPoint); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("First Person Animator Settings", "window"); EditorGUILayout.PropertyField (useWeaponAnimatorFirstPerson); if (useWeaponAnimatorFirstPerson.boolValue) { EditorGUILayout.PropertyField (mainWeaponAnimatorSystem); EditorGUILayout.Space (); if (GUILayout.Button ("Select Weapon Animator On Editor")) { IKWeaponManager.selectWeaponAnimator (); } } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon Surface Collision Settings", "window"); EditorGUILayout.PropertyField (layer); EditorGUILayout.Space (); EditorGUILayout.PropertyField (extraColliderCenterOnFireWeaponOnFBA); EditorGUILayout.PropertyField (extraColliderScaleOnFireWeaponOnFBA); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon Attachment Components", "window"); GUILayout.Label ("Attachment Assigned\t " + weaponUsesAttachment.boolValue); EditorGUILayout.PropertyField (mainWeaponAttachmentSystem); EditorGUILayout.Space (); if (GUILayout.Button ("Check Attachments Assigned")) { IKWeaponManager.checkIfWeaponAttachmentAssigned (); } EditorGUILayout.Space (); if (GUILayout.Button ("Select Attachment System On Editor")) { IKWeaponManager.selectAttachmentSystemOnEditor (); } GUILayout.EndVertical (); } if (showSettings.boolValue || showElementSettings.boolValue || showPrefabSettings.boolValue) { style.fontStyle = FontStyle.Bold; style.fontSize = 30; style.alignment = TextAnchor.MiddleCenter; style.normal.textColor = Color.black; } if (showElementSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("WEAPON SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); GUI.color = Color.cyan; EditorGUILayout.HelpBox ("Configure the settings for third and first person", MessageType.None); GUI.color = Color.white; EditorGUILayout.Space (); EditorGUILayout.Space (); buttonColor = GUI.backgroundColor; EditorGUILayout.BeginVertical (); if (showThirdPersonSettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "\nHide Third Person Settings\n"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "\nShow Third Person Settings\n"; } if (GUILayout.Button (inputListOpenedText)) { showThirdPersonSettings.boolValue = !showThirdPersonSettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showThirdPersonSettings.boolValue) { EditorGUILayout.Space (); showSectionTitle ("THIRD PERSON WEAPON SETTINGS"); GUILayout.BeginVertical ("Third Person Weapon Settings", "window"); showWeaponSettings (thirdPersonWeaponInfo, true); EditorGUILayout.Space (); GUILayout.EndVertical (); EditorGUILayout.Space (); EditorGUILayout.PropertyField (thirdPersonUseSwayInfo); if (thirdPersonUseSwayInfo.boolValue) { EditorGUILayout.BeginVertical (); if (showSwaySettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Third Person Sway Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Third Person Sway Settings"; } if (GUILayout.Button (inputListOpenedText)) { showSwaySettings.boolValue = !showSwaySettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showSwaySettings.boolValue) { if (thirdPersonUseRunPosition.boolValue && thirdPersonUseRunSwayInfo.boolValue) { GUILayout.BeginVertical ("box"); EditorGUILayout.BeginVertical (); if (showWalkSwaySettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Walk Sway Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Walk Sway Settings"; } if (GUILayout.Button (inputListOpenedText)) { showWalkSwaySettings.boolValue = !showWalkSwaySettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showWalkSwaySettings.boolValue) { showSelectedSwaySettings (thirdPersonSwayInfo); } EditorGUILayout.Space (); EditorGUILayout.BeginVertical (); if (showRunSwaySettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Run Sway Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Run Sway Settings"; } if (GUILayout.Button (inputListOpenedText)) { showRunSwaySettings.boolValue = !showRunSwaySettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showRunSwaySettings.boolValue) { showSelectedSwaySettings (runThirdPersonSwayInfo); } EditorGUILayout.EndVertical (); } else { showSelectedSwaySettings (thirdPersonSwayInfo); } } EditorGUILayout.Space (); } } EditorGUILayout.Space (); buttonColor = GUI.backgroundColor; EditorGUILayout.BeginVertical (); if (showFirstPersonSettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "\nHide First Person Settings\n"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "\nShow First Person Settings\n"; } if (GUILayout.Button (inputListOpenedText)) { showFirstPersonSettings.boolValue = !showFirstPersonSettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showFirstPersonSettings.boolValue) { EditorGUILayout.Space (); showSectionTitle ("FIRST PERSON WEAPON SETTINGS"); GUILayout.BeginVertical ("First Person Weapon Settings", "window"); showWeaponSettings (firstPersonWeaponInfo, false); EditorGUILayout.Space (); GUILayout.EndVertical (); EditorGUILayout.Space (); EditorGUILayout.PropertyField (firstPersonUseSwayInfo); if (firstPersonUseSwayInfo.boolValue) { EditorGUILayout.BeginVertical (); if (showSwaySettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide First Person Sway Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show First Person Sway Settings"; } if (GUILayout.Button (inputListOpenedText)) { showSwaySettings.boolValue = !showSwaySettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showSwaySettings.boolValue) { if (firstPersonUseRunPosition.boolValue && firstPersonUseRunSwayInfo.boolValue) { GUILayout.BeginVertical ("box"); EditorGUILayout.BeginVertical (); if (showWalkSwaySettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Walk Sway Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Walk Sway Settings"; } if (GUILayout.Button (inputListOpenedText)) { showWalkSwaySettings.boolValue = !showWalkSwaySettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showWalkSwaySettings.boolValue) { showSelectedSwaySettings (firstPersonSwayInfo); } EditorGUILayout.Space (); EditorGUILayout.BeginVertical (); if (showRunSwaySettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Run Sway Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Run Sway Settings"; } if (GUILayout.Button (inputListOpenedText)) { showRunSwaySettings.boolValue = !showRunSwaySettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showRunSwaySettings.boolValue) { showSelectedSwaySettings (runFirstPersonSwayInfo); } EditorGUILayout.EndVertical (); } else { showSelectedSwaySettings (firstPersonSwayInfo); } } EditorGUILayout.Space (); } EditorGUILayout.BeginVertical (); if (showIdleSettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Idle Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Idle Settings"; } if (GUILayout.Button (inputListOpenedText)) { showIdleSettings.boolValue = !showIdleSettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showIdleSettings.boolValue) { EditorGUILayout.Space (); GUILayout.BeginVertical ("First Person Weapon Idle Settings", "window"); EditorGUILayout.PropertyField (useWeaponIdle); if (useWeaponIdle.boolValue) { EditorGUILayout.PropertyField (timeToActiveWeaponIdle); EditorGUILayout.PropertyField (idlePositionAmount); EditorGUILayout.PropertyField (idleRotationAmount); EditorGUILayout.PropertyField (idleSpeed); GUILayout.BeginVertical ("Weapon State", "window"); EditorGUILayout.PropertyField (playerMoving); EditorGUILayout.PropertyField (idleActive); GUILayout.EndVertical (); } GUILayout.EndVertical (); EditorGUILayout.Space (); } } EditorGUILayout.Space (); buttonColor = GUI.backgroundColor; EditorGUILayout.BeginVertical (); if (showFullBodyAwarernessSettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "\nHide Full Body Awareness Settings\n"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "\nShow Full Body Awareness Settings\n"; } if (GUILayout.Button (inputListOpenedText)) { showFullBodyAwarernessSettings.boolValue = !showFullBodyAwarernessSettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showFullBodyAwarernessSettings.boolValue) { EditorGUILayout.Space (); showSectionTitle ("FULL BODY AWARENESS SETTINGS"); GUILayout.BeginVertical ("Full Body Awareness Settings", "window"); showFullBodyAwarenessWeaponSettings (thirdPersonWeaponInfo, true); EditorGUILayout.Space (); EditorGUILayout.PropertyField (showFBAGizmo); EditorGUILayout.PropertyField (showFBAWalkGizmo); EditorGUILayout.PropertyField (showFBAAimGizmo); EditorGUILayout.PropertyField (showFBACrouchGizmo); EditorGUILayout.PropertyField (showFBAJumpGizmo); EditorGUILayout.PropertyField (showFBARunGizmo); EditorGUILayout.PropertyField (showFBAObstacleGizmo); EditorGUILayout.Space (); GUILayout.EndVertical (); } EditorGUILayout.Space (); EditorGUILayout.BeginVertical (); if (showShotShakeSettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Shot Shake Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Shot Shake Settings"; } if (GUILayout.Button (inputListOpenedText)) { showShotShakeSettings.boolValue = !showShotShakeSettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showShotShakeSettings.boolValue) { EditorGUILayout.Space (); GUILayout.BeginVertical ("Shot Shake Settings", "window"); EditorGUILayout.PropertyField (sameValueBothViews); EditorGUILayout.Space (); if (sameValueBothViews.boolValue) { showShakeInfo (thirdPersonshotShakeInfo, false, true); } else { EditorGUILayout.PropertyField (useShotShakeInThirdPerson); if (useShotShakeInThirdPerson.boolValue) { showShakeInfo (thirdPersonshotShakeInfo, false, true); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (useShotShakeInFirstPerson); if (useShotShakeInFirstPerson.boolValue) { showShakeInfo (firstPersonshotShakeInfo, true, true); } } GUILayout.EndVertical (); EditorGUILayout.Space (); } EditorGUILayout.Space (); EditorGUILayout.BeginVertical (); if (showShotCameraNoiseSettings.boolValue) { GUI.backgroundColor = Color.gray; inputListOpenedText = "Hide Shot Camera Noise Settings"; } else { GUI.backgroundColor = buttonColor; inputListOpenedText = "Show Shot Camera Noise Settings"; } if (GUILayout.Button (inputListOpenedText)) { showShotCameraNoiseSettings.boolValue = !showShotCameraNoiseSettings.boolValue; } GUI.backgroundColor = buttonColor; EditorGUILayout.EndVertical (); if (showShotCameraNoiseSettings.boolValue) { EditorGUILayout.Space (); GUILayout.BeginVertical ("Shot Camera Noise Settings", "window"); EditorGUILayout.PropertyField (useShotCameraNoise); if (useShotCameraNoise.boolValue) { GUILayout.Label (new GUIContent ("Third Person"), EditorStyles.boldLabel); EditorGUILayout.Space (); GUILayout.Label (new GUIContent ("Vertical Range"), EditorStyles.boldLabel); GUILayout.BeginHorizontal (); IKWeaponManager.verticalShotCameraNoiseAmountThirdPerson.x = EditorGUILayout.FloatField (IKWeaponManager.verticalShotCameraNoiseAmountThirdPerson.x, GUILayout.MaxWidth (50)); EditorGUILayout.MinMaxSlider (ref IKWeaponManager.verticalShotCameraNoiseAmountThirdPerson.x, ref IKWeaponManager.verticalShotCameraNoiseAmountThirdPerson.y, -2, 2); IKWeaponManager.verticalShotCameraNoiseAmountThirdPerson.y = EditorGUILayout.FloatField (IKWeaponManager.verticalShotCameraNoiseAmountThirdPerson.y, GUILayout.MaxWidth (50)); GUILayout.EndHorizontal (); EditorGUILayout.Space (); GUILayout.Label (new GUIContent ("Horizontal Range"), EditorStyles.boldLabel); GUILayout.BeginHorizontal (); IKWeaponManager.horizontalShotCameraNoiseAmountThirdPerson.x = EditorGUILayout.FloatField (IKWeaponManager.horizontalShotCameraNoiseAmountThirdPerson.x, GUILayout.MaxWidth (50)); EditorGUILayout.MinMaxSlider (ref IKWeaponManager.horizontalShotCameraNoiseAmountThirdPerson.x, ref IKWeaponManager.horizontalShotCameraNoiseAmountThirdPerson.y, -2, 2); IKWeaponManager.horizontalShotCameraNoiseAmountThirdPerson.y = EditorGUILayout.FloatField (IKWeaponManager.horizontalShotCameraNoiseAmountThirdPerson.y, GUILayout.MaxWidth (50)); GUILayout.EndHorizontal (); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.Label (new GUIContent ("First Person"), EditorStyles.boldLabel); EditorGUILayout.Space (); GUILayout.Label (new GUIContent ("Vertical Range"), EditorStyles.boldLabel); GUILayout.BeginHorizontal (); IKWeaponManager.verticalShotCameraNoiseAmountFirstPerson.x = EditorGUILayout.FloatField (IKWeaponManager.verticalShotCameraNoiseAmountFirstPerson.x, GUILayout.MaxWidth (50)); EditorGUILayout.MinMaxSlider (ref IKWeaponManager.verticalShotCameraNoiseAmountFirstPerson.x, ref IKWeaponManager.verticalShotCameraNoiseAmountFirstPerson.y, -2, 2); IKWeaponManager.verticalShotCameraNoiseAmountFirstPerson.y = EditorGUILayout.FloatField (IKWeaponManager.verticalShotCameraNoiseAmountFirstPerson.y, GUILayout.MaxWidth (50)); GUILayout.EndHorizontal (); EditorGUILayout.Space (); GUILayout.Label (new GUIContent ("Horizontal Range"), EditorStyles.boldLabel); GUILayout.BeginHorizontal (); IKWeaponManager.horizontalShotCameraNoiseAmountFirstPerson.x = EditorGUILayout.FloatField (IKWeaponManager.horizontalShotCameraNoiseAmountFirstPerson.x, GUILayout.MaxWidth (50)); EditorGUILayout.MinMaxSlider (ref IKWeaponManager.horizontalShotCameraNoiseAmountFirstPerson.x, ref IKWeaponManager.horizontalShotCameraNoiseAmountFirstPerson.y, -2, 2); IKWeaponManager.horizontalShotCameraNoiseAmountFirstPerson.y = EditorGUILayout.FloatField (IKWeaponManager.horizontalShotCameraNoiseAmountFirstPerson.y, GUILayout.MaxWidth (50)); GUILayout.EndHorizontal (); EditorGUILayout.Space (); EditorGUILayout.PropertyField (useShotCameraNoiseDuration); if (useShotCameraNoiseDuration.boolValue) { EditorGUILayout.PropertyField (shotCameraNoiseDuration); } } GUILayout.EndVertical (); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Gizmo Options", "window"); EditorGUILayout.PropertyField (showThirdPersonGizmo); EditorGUILayout.PropertyField (showFirstPersonGizmo); if (showThirdPersonGizmo.boolValue || showFirstPersonGizmo.boolValue) { EditorGUILayout.Space (); EditorGUILayout.PropertyField (gizmoLabelColor); EditorGUILayout.PropertyField (showPositionGizmo); EditorGUILayout.PropertyField (showMainWeaponPositionsGizmo); EditorGUILayout.Space (); EditorGUILayout.PropertyField (showCollisionDetectionGizmo); EditorGUILayout.PropertyField (showEditAttachmentGizmo); EditorGUILayout.Space (); EditorGUILayout.PropertyField (showHandsWaypointGizmo); EditorGUILayout.PropertyField (showWeaponWaypointGizmo); EditorGUILayout.Space (); GUILayout.BeginVertical ("Handle Options", "window"); if (showThirdPersonGizmo.boolValue) { EditorGUILayout.PropertyField (thirdPersonUseHandle); if (thirdPersonUseHandle.boolValue) { EditorGUILayout.PropertyField (thirdPersonHandleRadius); EditorGUILayout.PropertyField (thirdPersonHandleGizmoColor); } EditorGUILayout.PropertyField (thirdPersonUsePositionHandle); } if (showFirstPersonGizmo.boolValue) { EditorGUILayout.PropertyField (firstPersonUseHandle); if (firstPersonUseHandle.boolValue) { EditorGUILayout.PropertyField (firstPersonHandleRadius); EditorGUILayout.PropertyField (firstPersonHandleGizmoColor); } EditorGUILayout.PropertyField (firstPersonUsePositionHandle); } GUILayout.EndVertical (); } EditorGUILayout.Space (); GUILayout.EndVertical (); } if (showPrefabSettings.boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("WEAPON PREFAB SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon Pickup Prefab (No Inventory) Settings", "window"); EditorGUILayout.PropertyField (relativePathWeaponsPickups); EditorGUILayout.PropertyField (emtpyWeaponPrefab); EditorGUILayout.Space (); EditorGUILayout.PropertyField (weaponPrefabModel, new GUIContent ("Weapon Pickup (No Inventory)")); EditorGUILayout.Space (); if (GUILayout.Button ("Create Weapon Pickup Prefab (No Inventory)")) { IKWeaponManager.createWeaponPrefab (); } GUILayout.EndVertical (); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon Pickup Prefab (Inventory) Settings", "window"); EditorGUILayout.PropertyField (inventoryWeaponPrefabObject, new GUIContent ("Weapon Pickup (Inventory)")); EditorGUILayout.Space (); if (GUILayout.Button ("Assign Weapon Pickup Prefab (Inventory)")) { IKWeaponManager.assignWeaponPrefab (); } GUILayout.EndVertical (); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Create Inventory Weapon And Ammo Prefabs Settings", "window"); EditorGUILayout.PropertyField (relativePathWeaponsMesh); EditorGUILayout.PropertyField (relativePathWeaponsAmmoMesh); EditorGUILayout.PropertyField (inventoryWeaponCategoryName); EditorGUILayout.PropertyField (weaponName); EditorGUILayout.Space (); if (GUILayout.Button ("Create Inventory Weapon Object")) { IKWeaponManager.createInventoryWeapon (); } EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.PropertyField (inventoryAmmoCategoryName); EditorGUILayout.PropertyField (ammoAmountPerPickup); EditorGUILayout.PropertyField (weaponAmmoMesh); EditorGUILayout.PropertyField (weaponAmmoIconTexture); EditorGUILayout.Space (); if (GUILayout.Button ("Create Inventory Weapon Ammo Object")) { IKWeaponManager.createInventoryWeaponAmmo (); } GUILayout.EndVertical (); EditorGUILayout.Space (); } if (GUI.changed) { serializedObject.ApplyModifiedProperties (); EditorUtility.SetDirty (target); } } void showSelectedSwaySettings (SerializedProperty list) { EditorGUILayout.Space (); GUILayout.BeginVertical ("Sway Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useSway")); EditorGUILayout.Space (); if (list.FindPropertyRelative ("useSway").boolValue) { GUILayout.BeginVertical ("Sway Position Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("usePositionSway")); if (list.FindPropertyRelative ("usePositionSway").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayPositionVertical")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayPositionHorizontal")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayPositionMaxAmount")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayPositionSmooth")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Sway Rotation Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRotationSway")); if (list.FindPropertyRelative ("useRotationSway").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayRotationVertical")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayRotationHorizontal")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayRotationSmooth")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Sway Bob Position Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useBobPosition")); if (list.FindPropertyRelative ("useBobPosition").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("bobPositionSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("bobPositionAmount")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useInputMultiplierForBobPosition")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Sway Bob Rotation Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useBobRotation")); if (list.FindPropertyRelative ("useBobRotation").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("bobRotationVertical")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("bobRotationHorizontal")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useInputMultiplierForBobRotation")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Position Clamp Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useSwayPositionClamp")); if (list.FindPropertyRelative ("useSwayPositionClamp").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayPositionHorizontalClamp")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayPositionVerticalClamp")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Rotation Clamp Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useSwayRotationClamp")); if (list.FindPropertyRelative ("useSwayRotationClamp").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayRotationClampX")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayRotationClampZ")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Reset Position Rotation Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("resetSwayPositionSmooth")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("resetSwayRotationSmooth")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("resetSwayValueSpeed")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Extra Sway Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("movingExtraPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayPositionRunningMultiplier")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayRotationRunningMultiplier")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("bobPositionRunningMultiplier")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("bobRotationRunningMultiplier")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayPositionPercentageAiming")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("swayRotationPercentageAiming")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("bobPositionPercentageAiming")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("bobRotationPercentageAiming")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("minMouseAmountForSway")); GUILayout.EndVertical (); } GUILayout.EndVertical (); EditorGUILayout.Space (); } void showWeaponSettings (SerializedProperty list, bool isThirdPerson) { EditorGUILayout.Space (); showSingleWeaponSettings = list.FindPropertyRelative ("showSingleWeaponSettings").boolValue; EditorGUILayout.Space (); listButtonBackgroundColor = GUI.backgroundColor; EditorGUILayout.BeginHorizontal (); if (showSingleWeaponSettings) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = buttonColor; } if (GUILayout.Button ("Show Single Weapon Settings")) { showSingleWeaponSettings = !showSingleWeaponSettings; } GUI.backgroundColor = listButtonBackgroundColor; EditorGUILayout.EndHorizontal (); list.FindPropertyRelative ("showSingleWeaponSettings").boolValue = showSingleWeaponSettings; if (showSingleWeaponSettings) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("SINGLE WEAPON SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Main Settings", "window"); if (isThirdPerson) { EditorGUILayout.PropertyField (useLowerRotationSpeedAimedThirdPerson); if (useLowerRotationSpeedAimedThirdPerson.boolValue) { EditorGUILayout.PropertyField (verticalRotationSpeedAimedInThirdPerson); EditorGUILayout.PropertyField (horizontalRotationSpeedAimedInThirdPerson); } } else { EditorGUILayout.PropertyField (canAimInFirstPerson); EditorGUILayout.PropertyField (useLowerRotationSpeedAimed); if (useLowerRotationSpeedAimed.boolValue) { EditorGUILayout.PropertyField (verticalRotationSpeedAimedInFirstPerson); EditorGUILayout.PropertyField (horizontalRotationSpeedAimedInFirstPerson); } } EditorGUILayout.PropertyField (list.FindPropertyRelative ("drawWeaponMovementSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("aimMovementSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("crouchMovementSpeed")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("resetWeaponPositionAfterReloadSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("resetWeaponPositionAfterActionSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("resumeWeaponIKPositionAfterActionSpeed")); if (isThirdPerson) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("changeOneOrTwoHandWieldSpeed")); } GUILayout.EndVertical (); if (!isThirdPerson) { EditorGUILayout.Space (); GUILayout.BeginVertical ("First Person Arms Settings", "window"); EditorGUILayout.PropertyField (firstPersonArms); EditorGUILayout.PropertyField (disableOnlyFirstPersonArmsMesh); EditorGUILayout.PropertyField (firstPersonArmsMesh); EditorGUILayout.Space (); showSimpleList (extraFirstPersonArmsMeshes); EditorGUILayout.Space (); if (GUILayout.Button ("Enable Arms On Editor")) { IKWeaponManager.enableOrDisableFirstPersonArmsFromEditor (true); } EditorGUILayout.Space (); if (GUILayout.Button ("Disable Arms On Editor")) { IKWeaponManager.enableOrDisableFirstPersonArmsFromEditor (false); } GUILayout.EndVertical (); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon Positions", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("aimPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("walkPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("keepPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("aimRecoilPosition")); if (!isThirdPerson) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("walkRecoilPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCrouchPosition")); if (list.FindPropertyRelative ("useCrouchPosition").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("crouchPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("crouchRecoilPosition")); } } EditorGUILayout.PropertyField (list.FindPropertyRelative ("lowerWeaponPosition")); EditorGUILayout.Space (); if (isThirdPerson) { GUILayout.BeginVertical ("Deactivate IK If Not Aiming Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("deactivateIKIfNotAiming")); if (list.FindPropertyRelative ("deactivateIKIfNotAiming").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("placeWeaponOnWalkPositionBeforeDeactivateIK")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("weaponPositionInHandForDeactivateIK")); EditorGUILayout.Space (); if (GUILayout.Button ("Copy Weapon Position In Hand")) { IKWeaponManager.copyTransformValuesToBuffer (IKWeaponManager.weaponTransform); } if (GUILayout.Button ("Paste Weapon Position In Hand")) { IKWeaponManager.pasteTransformValuesToBuffer (list.FindPropertyRelative ("weaponPositionInHandForDeactivateIK").objectReferenceValue as Transform); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Draw Deactivate IK Weapon Path", "window"); showSimpleList (thirdPersonDeactivateIKDrawPath); GUILayout.EndVertical (); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon Rotation Point Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useWeaponRotationPoint")); if (list.FindPropertyRelative ("useWeaponRotationPoint").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("weaponRotationPoint")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("weaponRotationPointHolder")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("weaponRotationPointHeadLookTarget")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("rotationPointInfo.rotationUpPointAmountMultiplier")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("rotationPointInfo.rotationDownPointAmountMultiplier")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("rotationPointInfo.rotationPointSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("rotationPointInfo.useRotationUpClamp")); if (list.FindPropertyRelative ("rotationPointInfo.useRotationUpClamp").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("rotationPointInfo.rotationUpClampAmount")); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("rotationPointInfo.useRotationDownClamp")); if (list.FindPropertyRelative ("rotationPointInfo.useRotationDownClamp").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("rotationPointInfo.rotationDownClamp")); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("weaponPivotPoint")); } GUILayout.EndVertical (); EditorGUILayout.Space (); } else { GUILayout.BeginVertical ("Reload Path Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useReloadMovement")); if (list.FindPropertyRelative ("useReloadMovement").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("reloadSpline")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("reloadDuration")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("reloadLookDirectionSpeed")); } GUILayout.EndVertical (); EditorGUILayout.Space (); } GUILayout.BeginVertical ("Surface Position Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("checkSurfaceCollision")); if (list.FindPropertyRelative ("checkSurfaceCollision").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("collisionRayDistance")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("collisionMovementSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("surfaceCollisionPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("surfaceCollisionRayPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("hideCursorOnCollision")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("checkSurfaceOnlyOnAiming")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("avoidShootOnSurfaceDetected")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("avoidAimingIfSurfaceDetected")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Run Position Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRunPosition")); if (list.FindPropertyRelative ("useRunPosition").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("runMovementSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("runPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("hideCursorOnRun")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRunSwayInfo")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Jump Position Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useJumpPositions")); if (list.FindPropertyRelative ("useJumpPositions").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("jumpStartPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("jumpEndPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("jumpStartMovementSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("jumpEndtMovementSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("resetJumpMovementSped")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("delayAtJumpEnd")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Run Fov Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useNewFovOnRun")); if (list.FindPropertyRelative ("useNewFovOnRun").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("changeFovSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("newFovOnRun")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Melee Attack Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useMeleeAttack")); if (list.FindPropertyRelative ("useMeleeAttack").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCustomMeleeAttackLayer")); if (list.FindPropertyRelative ("useCustomMeleeAttackLayer").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("customMeleeAttackLayer")); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCapsuleRaycast")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackStartMovementSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackEndMovementSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackEndDelay")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackRaycastPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackRaycastDistance")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackCapsuleDistance")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackRaycastRadius")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackDamageAmount")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackIgnoreShield")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("ignoreDamageValueOnLayer")); if (list.FindPropertyRelative ("ignoreDamageValueOnLayer").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("layerToIgnoreDamage")); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useMeleeAttackShakeInfo")); if (list.FindPropertyRelative ("useMeleeAttackShakeInfo").boolValue) { EditorGUILayout.Space (); GUILayout.BeginVertical ("Melee Attack Shake Settings", "window"); if (isThirdPerson) { showShakeInfo (thirdPersonMeleeAttackShakeInfo, false, false); } else { showShakeInfo (firstPersonMeleeAttackShakeInfo, true, false); } GUILayout.EndVertical (); EditorGUILayout.Space (); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("applyMeleeAtackForce")); if (list.FindPropertyRelative ("applyMeleeAtackForce").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackForceAmount")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackForceMode")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackApplyForceToVehicles")); if (list.FindPropertyRelative ("meleeAttackApplyForceToVehicles").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleAttackForceToVehicles")); } } EditorGUILayout.PropertyField (list.FindPropertyRelative ("useMeleeAttackSound")); if (list.FindPropertyRelative ("useMeleeAttackSound").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackSurfaceSound")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackSurfaceAudioElement")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackAirSound")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackAirAudioElement")); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("useMeleeAttackParticles")); if (list.FindPropertyRelative ("useMeleeAttackParticles").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackParticles")); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("canActivateReactionSystemTemporally")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageReactionID")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageTypeID")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("damageCanBeBlocked")); if (isThirdPerson) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("useActionSystemForMeleeAttack")); if (list.FindPropertyRelative ("useActionSystemForMeleeAttack").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackActionName")); } } EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRemoteEvent")); if (list.FindPropertyRelative ("useRemoteEvent").boolValue) { showSimpleList (list.FindPropertyRelative ("remoteEventNameList")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("checkObjectsToUseRemoteEventsOnDamage")); if (list.FindPropertyRelative ("checkObjectsToUseRemoteEventsOnDamage").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("layerToUseRemoteEventsOnDamage")); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useRemoteEventToEnableParryInteraction")); if (list.FindPropertyRelative ("useRemoteEventToEnableParryInteraction").boolValue) { showSimpleList (list.FindPropertyRelative ("remoteEventToEnableParryInteractionNameList")); } } EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("showMeleeAttackGizmo")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Attachment Positions", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("hasAttachments")); if (list.FindPropertyRelative ("hasAttachments").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("editAttachmentPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("leftHandMesh")); if (!isThirdPerson) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("extraLeftHandMesh")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("extraLeftHandMeshParent")); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("leftHandEditPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("editAttachmentMovementSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("editAttachmentHandSpeed")); if (!isThirdPerson) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("useSightPosition")); if (list.FindPropertyRelative ("useSightPosition").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("sightPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("sightRecoilPosition")); } } else { EditorGUILayout.PropertyField (list.FindPropertyRelative ("attachmentCameraPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("leftHandParent")); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("usingSecondPositionForHand")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("secondPositionForHand")); } GUILayout.EndVertical (); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Player Movement Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canRunWhileCarrying")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canRunWhileAiming")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useNewCarrySpeed")); if (list.FindPropertyRelative ("useNewCarrySpeed").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("newCarrySpeed")); } if (!isThirdPerson) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("useNewAimSpeed")); if (list.FindPropertyRelative ("useNewAimSpeed").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("newAimSpeed")); } } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Recoil Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("weaponHasRecoil")); if (list.FindPropertyRelative ("weaponHasRecoil").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("recoilSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("endRecoilSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useExtraRandomRecoil")); if (list.FindPropertyRelative ("useExtraRandomRecoil").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("useExtraRandomRecoilPosition")); if (list.FindPropertyRelative ("useExtraRandomRecoilPosition").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("extraRandomRecoilPosition")); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("useExtraRandomRecoilRotation")); if (list.FindPropertyRelative ("useExtraRandomRecoilRotation").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("extraRandomRecoilRotation")); } } } GUILayout.EndVertical (); EditorGUILayout.Space (); if (isThirdPerson) { EditorGUILayout.Space (); GUILayout.BeginVertical ("Quick Draw Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useQuickDrawKeepWeapon")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Hands State", "window"); GUILayout.Label ("Hands In Position To Aim\t" + list.FindPropertyRelative ("handsInPosition").boolValue); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Draw/Keep Weapon Bezier Path", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useBezierCurve")); if (list.FindPropertyRelative ("useBezierCurve").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("spline")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("bezierDuration")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("lookDirectionSpeed")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Draw/Keep Weapon Path", "window"); showSimpleList (thirdPersonKeepPath); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Hands Info", "window"); showHandList (thirdPersonHandsInfo); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Head Look Settings", "window"); EditorGUILayout.PropertyField (headLookWhenAiming); if (headLookWhenAiming.boolValue) { EditorGUILayout.PropertyField (headLookSpeed); EditorGUILayout.PropertyField (headLookTarget); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Custom Camera State Third Person Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCustomThirdPersonAimActive")); if (list.FindPropertyRelative ("useCustomThirdPersonAimActive").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("customDefaultThirdPersonAimRightStateName")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("customDefaultThirdPersonAimLeftStateName")); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCustomThirdPersonAimCrouchActive")); if (list.FindPropertyRelative ("useCustomThirdPersonAimCrouchActive").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("customDefaultThirdPersonAimRightCrouchStateName")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("customDefaultThirdPersonAimLeftCrouchStateName")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Custom Camera State Third Person Withot Aim Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCustomThirdPersonWithoutAimActive")); if (list.FindPropertyRelative ("useCustomThirdPersonWithoutAimActive").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("customDefaultThirdPersonWithoutAimRightStateName")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("customDefaultThirdPersonWithoutAimLeftStateName")); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useCustomThirdPersonWithoutAimCrouchActive")); if (list.FindPropertyRelative ("useCustomThirdPersonWithoutAimCrouchActive").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("customDefaultThirdPersonWithoutAimRightCrouchStateName")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("customDefaultThirdPersonWithoutAimLeftCrouchStateName")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Idle ID Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useNewIdleID")); if (list.FindPropertyRelative ("useNewIdleID").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("newIdleID")); } GUILayout.EndVertical (); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Draw/Keep Weapon Settings Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useDrawKeepWeaponAnimation")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("drawWeaponActionName")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("keepWeaponActionName")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("delayToPlaceWeaponOnHandOnDrawAnimation")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("delayToPlaceWeaponOnKeepAnimation")); GUILayout.EndVertical (); EditorGUILayout.Space (); } showDualWeaponSettings = list.FindPropertyRelative ("showDualWeaponSettings").boolValue; EditorGUILayout.Space (); listButtonBackgroundColor = GUI.backgroundColor; EditorGUILayout.BeginHorizontal (); if (showDualWeaponSettings) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = buttonColor; } if (GUILayout.Button ("Show Dual Weapon Settings")) { showDualWeaponSettings = !showDualWeaponSettings; } GUI.backgroundColor = listButtonBackgroundColor; EditorGUILayout.EndHorizontal (); list.FindPropertyRelative ("showDualWeaponSettings").boolValue = showDualWeaponSettings; if (showDualWeaponSettings) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("DUAL WEAPON SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Dual Weapon Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("canBeUsedAsDualWeapon")); if (list.FindPropertyRelative ("canBeUsedAsDualWeapon").boolValue) { EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("RIGHT HAND WEAPON SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Right Hand Weapon Settings", "window"); showDualWeaponInfo (list.FindPropertyRelative ("rightHandDualWeaopnInfo"), isThirdPerson); GUILayout.EndVertical (); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField ("LEFT HAND WEAPON SETTINGS", style); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Left Hand Weapon Settings", "window"); showDualWeaponInfo (list.FindPropertyRelative ("leftHandDualWeaponInfo"), isThirdPerson); GUILayout.EndVertical (); } GUILayout.EndVertical (); } } void showDualWeaponInfo (SerializedProperty list, bool isThirdPerson) { GUILayout.BeginVertical ("Weapon Positions", "window"); if (isThirdPerson) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("aimPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("aimRecoilPosition")); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("walkPosition")); if (!isThirdPerson) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("walkRecoilPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("crouchPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("crouchRecoilPosition")); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("keepPosition")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Weapon Rotation Point Settings", "window"); if (isThirdPerson) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("useDualRotationPoint")); if (list.FindPropertyRelative ("useDualRotationPoint").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("weaponRotationPoint")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("weaponRotationPointHolder")); } } GUILayout.EndVertical (); EditorGUILayout.Space (); if (!isThirdPerson) { EditorGUILayout.Space (); GUILayout.BeginVertical ("Lower Position Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("lowerWeaponPosition")); GUILayout.EndVertical (); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Surface Position Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("collisionRayDistance")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("surfaceCollisionPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("surfaceCollisionRayPosition")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Run Position Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("runPosition")); GUILayout.EndVertical (); EditorGUILayout.Space (); if (!isThirdPerson) { GUILayout.BeginVertical ("Jump Position Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("jumpStartPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("jumpEndPosition")); GUILayout.EndVertical (); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Melee Attack Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackPosition")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("meleeAttackRaycastPosition")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Attachment Positions", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("editAttachmentPosition")); if (isThirdPerson) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("attachmentCameraPosition")); } GUILayout.EndVertical (); if (!isThirdPerson) { EditorGUILayout.Space (); GUILayout.BeginVertical ("First Person Arms Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("firstPersonHandMesh")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Reload Path Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useReloadMovement")); if (list.FindPropertyRelative ("useReloadMovement").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("reloadSpline")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("reloadDuration")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("reloadLookDirectionSpeed")); } GUILayout.EndVertical (); } if (isThirdPerson) { EditorGUILayout.Space (); GUILayout.BeginVertical ("Hands State", "window"); GUILayout.Label ("Hands In Position To Aim\t" + list.FindPropertyRelative ("handsInPosition").boolValue); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Draw/Keep Weapon Bezier Path", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useBezierCurve")); if (list.FindPropertyRelative ("useBezierCurve").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("spline")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("bezierDuration")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("lookDirectionSpeed")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Draw/Keep Weapon Path", "window"); showSimpleList (list.FindPropertyRelative ("keepPath")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Hands Info", "window"); showHandList (list.FindPropertyRelative ("handsInfo")); GUILayout.EndVertical (); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Draw/Keep Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useQuickDrawKeepWeapon")); if (isThirdPerson) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("placeWeaponOnKeepPositionSideBeforeDraw")); } GUILayout.EndVertical (); } EditorGUILayout.Space (); if (isThirdPerson) { GUILayout.BeginVertical ("Deactivate IK If Not Aiming Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("deactivateIKIfNotAiming")); if (list.FindPropertyRelative ("deactivateIKIfNotAiming").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("placeWeaponOnWalkPositionBeforeDeactivateIK")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("weaponPositionInHandForDeactivateIK")); EditorGUILayout.Space (); if (GUILayout.Button ("Copy Weapon Position In Hand")) { IKWeaponManager.copyTransformValuesToBuffer (IKWeaponManager.weaponTransform); } if (GUILayout.Button ("Paste Weapon Position In Hand")) { IKWeaponManager.pasteTransformValuesToBuffer (list.FindPropertyRelative ("weaponPositionInHandForDeactivateIK").objectReferenceValue as Transform); } EditorGUILayout.Space (); GUILayout.BeginVertical ("Draw Deactivate IK Weapon Path", "window"); showSimpleList (list.FindPropertyRelative ("deactivateIKDrawPath")); GUILayout.EndVertical (); EditorGUILayout.Space (); } GUILayout.EndVertical (); } } void showSimpleList (SerializedProperty list) { EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { GUILayout.BeginVertical ("box"); EditorGUILayout.Space (); GUILayout.Label ("Number Of Elements: \t" + list.arraySize); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add Element")) { 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 (); EditorGUILayout.Space (); } GUILayout.EndVertical (); } } void showHandElementInfo (SerializedProperty list) { Color listButtonBackgroundColor; showElbowInfo = list.FindPropertyRelative ("showElbowInfo").boolValue; GUILayout.BeginVertical ("box"); GUILayout.BeginVertical ("Hand Main Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("handTransform")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("limb")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("position"), new GUIContent ("IK Position")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("waypointFollower")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("handMovementSpeed")); GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Grabbing Hand ID Settings", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useGrabbingHandID")); if (list.FindPropertyRelative ("useGrabbingHandID").boolValue) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("grabbingHandID")); } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Hand Way Points", "window"); // EditorGUILayout.PropertyField (list.FindPropertyRelative ("useBezierCurve")); // if (list.FindPropertyRelative ("useBezierCurve").boolValue) { // EditorGUILayout.PropertyField (list.FindPropertyRelative ("spline")); // EditorGUILayout.PropertyField (list.FindPropertyRelative ("bezierDuration")); // EditorGUILayout.PropertyField (list.FindPropertyRelative ("lookDirectionSpeed")); // } else { // EditorGUILayout.Space (); showSimpleList (list.FindPropertyRelative ("wayPoints")); // } GUILayout.EndVertical (); EditorGUILayout.Space (); GUILayout.BeginVertical ("Hand Settings and State", "window"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("handUsedInWeapon")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("usedToDrawWeapon")); GUILayout.Label ("Hand In Position To Aim\t" + list.FindPropertyRelative ("handInPositionToAim").boolValue); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("HandIKWeight")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("targetValue")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("IKSpeed")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("handMovementSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("waypointFollower")); GUILayout.EndVertical (); EditorGUILayout.Space (); listButtonBackgroundColor = GUI.backgroundColor; EditorGUILayout.BeginHorizontal (); if (showElbowInfo) { GUI.backgroundColor = Color.gray; } else { GUI.backgroundColor = buttonColor; } if (GUILayout.Button ("Elbow Settings")) { showElbowInfo = !showElbowInfo; } GUI.backgroundColor = listButtonBackgroundColor; EditorGUILayout.EndHorizontal (); list.FindPropertyRelative ("showElbowInfo").boolValue = showElbowInfo; if (showElbowInfo) { GUILayout.BeginVertical ("box"); EditorGUILayout.PropertyField (list.FindPropertyRelative ("elbowInfo.Name")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("elbowInfo.elbow")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("elbowInfo.position")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("elbowInfo.elbowOriginalPosition")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("elbowInfo.targetValue")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("elbowInfo.elbowIKWeight")); GUILayout.EndVertical (); } GUILayout.EndVertical (); } void showHandList (SerializedProperty list) { EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); if (list.arraySize < 2) { GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add Hand")) { list.arraySize++; } if (GUILayout.Button ("Clear")) { list.arraySize = 0; } 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; showHandElementInfo (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 showShakeInfo (SerializedProperty list, bool isFirstPerson, bool isShootShake) { GUILayout.BeginVertical (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("shotForce")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("shakeSmooth")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("shakeDuration")); if (isFirstPerson) { EditorGUILayout.PropertyField (list.FindPropertyRelative ("shakePosition")); } EditorGUILayout.PropertyField (list.FindPropertyRelative ("shakeRotation")); EditorGUILayout.Space (); if (GUILayout.Button ("Test Shake")) { if (Application.isPlaying) { if (isShootShake) { IKWeaponManager.checkWeaponCameraShake (); } else { IKWeaponManager.checkMeleeAttackShakeInfo (); } } } GUILayout.EndVertical (); } void showFullBodyAwarenessWeaponSettings (SerializedProperty list, bool isThirdPerson) { EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAWalkPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAWalkRotationOffset")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAWalkRecoilPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAWalkRecoilRotationOffset")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("useFBARunPosition")); if (list.FindPropertyRelative ("useFBARunPosition").boolValue) { EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBARunPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBARunRotationOffset")); } EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAAimPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAAimRotationOffset")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAAimRecoilPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAAimRecoilRotationOffset")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBACrouchPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBACrouchRotationOffset")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBACrouchRecoilPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBACrouchRecoilRotationOffset")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAJumpStartPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAJumpStartRotationOffset")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAJumpEndPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAJumpEndRotationOffset")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAObstaclePositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAObstacleRotationOffset")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAMoveWalkPositionSpeed")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("overrideFBAValuesForOffset")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBARandomRecoilWalkPositionMultiplier")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBARandomRecoilAimPositionMultiplier")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("ignoreIKElbowsOnFBA")); EditorGUILayout.Space (); EditorGUILayout.Space (); GUILayout.BeginVertical ("FBA Aim Info List", "window", GUILayout.Height (30)); showFBAAimInfoList (list.FindPropertyRelative ("FBAAimInfoList")); GUILayout.EndVertical (); EditorGUILayout.Space (); if (GUILayout.Button ("Reset FBA Values")) { IKWeaponManager.resetFBAValues (); } EditorGUILayout.Space (); if (GUILayout.Button ("Set Default Rifle FBA Values")) { IKWeaponManager.updateFBAValues (true); } EditorGUILayout.Space (); if (GUILayout.Button ("Set Default Pistol FBA Values")) { IKWeaponManager.updateFBAValues (false); } EditorGUILayout.Space (); } void showFBAAimInfoList (SerializedProperty list) { EditorGUILayout.Space (); if (GUILayout.Button ("Show/Hide " + list.displayName, buttonStyle)) { list.isExpanded = !list.isExpanded; } EditorGUILayout.Space (); if (list.isExpanded) { EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Add")) { list.arraySize++; } if (GUILayout.Button ("Clear")) { list.arraySize = 0; } GUILayout.EndHorizontal (); EditorGUILayout.Space (); GUILayout.BeginHorizontal (); if (GUILayout.Button ("Expand All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = true; } } if (GUILayout.Button ("Collapse All")) { for (int i = 0; i < list.arraySize; i++) { list.GetArrayElementAtIndex (i).isExpanded = false; } } GUILayout.EndHorizontal (); EditorGUILayout.Space (); for (int i = 0; i < list.arraySize; i++) { 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; showFBAAimInfoElement (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 showFBAAimInfoElement (SerializedProperty list) { GUILayout.BeginVertical (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("Name")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAAimPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAAimRotationOffset")); EditorGUILayout.Space (); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAAimRecoilPositionOffset")); EditorGUILayout.PropertyField (list.FindPropertyRelative ("FBAAimRecoilRotationOffset")); GUILayout.EndVertical (); } void showSectionTitle (string sectionTitle) { sectionStyle.fontStyle = FontStyle.Bold; sectionStyle.fontSize = 30; sectionStyle.alignment = TextAnchor.MiddleCenter; EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.LabelField (sectionTitle, sectionStyle); EditorGUILayout.Space (); EditorGUILayout.Space (); EditorGUILayout.Space (); } } #endif